我有一个奇怪的问题,似乎会影响IE,但不会影响Chrome(我没有尝试过任何其他浏览器)
我正在使用以下代码生成一个带有nonce的表单-
<?php wp_nonce_field(\'solution-reg\') ?>
我目前有代码输出整个
$_REQUEST
数组,以便我可以看到nonce字段与表单数据一起提交-
Array ( [_wpnonce] => a7250b35a1 [_wp_http_referer] => /path-removed-for-stackexchange/ [..more fields..] )
在我的代码中,我调用verify函数,如下所示
if( !wp_verify_nonce($_POST[\'_wpnonce\'], \'solution-reg\') ){
$this->renderer->addData(\'error\', __(\'Invalid request\', \'...\'));
return false;
}
在Chrome中,我不能让它失败,每次尝试都会进入下一页。在IE中,第一个请求总是给我“无效请求”错误。如果我再次点击表单提交按钮,它将正常运行。
我认为唯一可能影响它的是一些javascript,它使用data-validate="1"
属性,由窗体触发.submit
处理程序,但由于它似乎不会影响在表单中传递的nonce值,我看不出这会如何影响nonce验证。
我真的很难看到IE有什么不同之处,会影响nonce是否正确验证。
编辑:(tl/dr我放弃)
记录对wp\\u create\\u nonce的调用似乎表明,如果我在IE中加载页面,它永远不会被调用。如果我添加一些随机查询字符串变量,它就会被调用。这意味着要缓存到某个地方,但我就是不明白。标题显示max-age 0, no-cache
立即到期。Total Cache插件已启用,但无法看到,因为chrome很好。我最终禁用了nonce,因为我真的没有任何其他答案。