Я использую концепцию Nonce для предотвращения CSRF.Я использую wp_create_nonce () для создания одноразового номера и wp_verify_nonce () для проверки созданного одноразового номера.Я использовал $. AjaxSetup () , чтобы добавить одноразовый номер в качестве заголовка для всех запросов ajax.
Это код,
Создание одноразового номера:
global $whl_nonce_value;
$whl_nonce_value = wp_create_nonce( 'whl_site_create_nonce' );
Добавление nonce ко всем запросам ajax с использованием $ .ajaxsetup ():
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, не кэшируется, чтобы оно соответствовало при проверке.