问题描述
我试图了解它是如何工作的很长一段时间。
浏览器 Chrome。阿帕奇。
我创建了 js 和 PHP 代码,但它不起作用。 据我了解,第一次 - 用 js 发送请求到 PHP,第二次 - PHP 将 etag 添加到标题,第三次 - 刷新后 js 在标题中发送 if-none-match
JS(JQuery):
$.ajax({
async:false,type: "POST",ifModified: true,url: 'trackETAG.PHP',withCredentials:true,data: { track: true},success: function (data){
newData = data;
},complete: function(XMLHttpRequest,textStatus){
var eTag = XMLHttpRequest.getAllResponseHeaders();
var newEtag = eTag;
}
});
PHP:
<?PHP
if(!empty(isset($_POST["track"]))){
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET,POST');
header("Access-Control-Allow-Headers: Origin,X-Requested-With,Content-Type,Accept,Etag,if-none-match");
header("Cache-Control: must-revalidate,post-check=0,pre-check=0");
header("Etag: 123");
$temp = null;
$zte = null;
$temp = trim($_SERVER['HTTP_IF_NONE_MATCH']);
$zte = $temp;
}
?>
HTTP_IF_NONE_MATCH 始终为空。
有人可以帮助我吗?
解决方法
请求类型有问题。 Etag 仅适用于我的程序中的 GET