如何防止Ajax请求标头被缓存

时间:2018-10-01 11:56:01

标签: ajax wordpress caching csrf nonce

我正在使用Nonce概念来防止CSRF。我正在使用 wp_create_nonce()创建随机数,并使用 wp_verify_nonce()验证创建的随机数。我已经使用 $。ajaxSetup()将现时数据添加为所有ajax请求的标头。

这是代码

创建随机数:

global $whl_nonce_value;  
$whl_nonce_value = wp_create_nonce( 'whl_site_create_nonce' );

使用$ .ajaxsetup()将随机数添加到所有ajax请求中:

var nonce = "<?php global $whl_nonce_value; echo $whl_nonce_value; ?>";
$.ajaxSetup({
    beforeSend: function (xhr){
        xhr.setRequestHeader("whl_nonce",nonce);
    }
  });

验证随机数令牌:

function sample_function(){
    $headers =  apache_request_headers();
    if(wp_verify_nonce($headers["whl_nonce"],'whl_site_create_nonce')){
      //code
    }
    else{
      wp_send_json_error(array("Security Error"),403);
      die();  
    }
}

面临的问题是,标头值正在缓存。因此,给定403错误,随机数令牌值未正确验证。 我需要确保每个ajax请求附带的标头值都不会被缓存,以便在验证时正确匹配。

0 个答案:

没有答案