JS(Jquery) 和 PHP Etag 在 Apache 上不起作用

问题描述

我试图了解它是如何工作的很长一段时间。

浏览器 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 始终为空。

Example

有人可以帮助我吗?

解决方法

请求类型有问题。 Etag 仅适用于我的程序中的 GET