问题描述

或者这是否打破了现在的目的,我不知道我不太明白吗? 🙂

例如对于在页面加载上运行的两个 ajax 请求,或者当点击某些东西时:

 $.ajax({
   type: 'post',
   url: 'admin-ajax.php',
   data: { action: 'foo',
           _ajax_nonce: '<?php echo $nonce; ?>' }
 });

 $.ajax({
   type: 'post',
   url: 'admin-ajax.php',
   data: { action: 'foo2',
           _ajax_nonce: '<?php echo $nonce; ?>' }
 });

最佳解决方案

仅在 init 挂钩上调用 WordPress nonce creation function

Use the init or any subsequent action to call this function. Calling it outside of an action can lead to troubles. See #14024 for details.

由于 init 钩子 「运行 WordPress 已经完成加载之后,而是在任何头文件发送之前」,所以在每个 full-page 请求 (不是 ajax 请求) 上创建随机数。因此,从技术上讲,您可以在多个请求中使用相同的随机数,但是您应该使其在每个请求上都是唯一的,正如其他答案所指出的那样。


更多地了解什么是废物:

Nonces 作为安全令牌在每个 Ajax 请求上发送,以确保该请求是由用户打算的。

次佳解决方案

是的,随便是很混乱。 🙂

虽然 nonce 的概念意味着它只使用一次,WordPress 不强制执行,技术上您可以多次使用随机数。

然而,由于随机数被用于验证意图 (如在你真正意味着执行特定的操作) – 不同的动作应该有不同的生成和检查。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。