我可以将同一随机数用于同一页面上的多个请求吗?


13

还是这打破了随机数的目的?我对这种随机数不甚了解。:)

例如,在页面加载或单击某些内容时运行的两个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; ?>' }
 });

Answers:


4

WordPress的随机数生成功能是只对被称为init钩:

使用init或任何后续操作来调用此函数。在动作之外调用它可能会导致麻烦。有关详情,请参见#14024

由于该init钩子“在WordPress完成加载后但在发送任何标头之前运行”,因此将在每个整页请求(不是ajax请求)上创建随机数。因此,从技术上讲,您可以在多个请求上使用相同的随机数,但正如其他答案所指出的那样,您应该在每个请求上使它们唯一


进一步了解现时是什么:

随机数作为安全令牌在每个Ajax请求上发送,以确保该请求是用户想要的。


该结论似乎基于错误的假设,即随机数是防止身份盗用的一种方式。参见wordpress.stackexchange.com/a/32361/205
scribu 2011年

@scribu感谢您的见解。我编辑了答案。
Naoise Golden 2011年

9

是的,随机数非常令人困惑。:)

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

但是,由于使用随机数来验证意图(就像您确实要执行特定操作一样)-不同的动作应生成和检查不同的随机数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.