Slim Framework 2 - 没有获得带有etag()的HTTP 304代码

时间:2017-04-21 11:12:56

标签: php http http-headers slim slim-2

我正在使用slim framework 2 etag()来获取缓存数据,一切正常我正在使用邮递员或任何其他客户端获取缓存数据但我在其余时间内得到HTTP 200 OK响应客户端,但当数据来自缓存

时应该是HTTP 304
  下面是我的苗条api:

 $app->get('/getNew', function () use ($app){
     $app->etag('uniqueEtag12');
    echo "I am updated one";
  });

我不知道为什么每次我在其余客户端获取200 OK响应代码,因为我在响应中获取缓存数据,下面是我的其余客户端响应快照

enter image description here

为什么此状态代码总是200 OK为什么我没有收到状态代码304请帮帮我

1 个答案:

答案 0 :(得分:0)

etag()方法做了两件事:

  1. ETag标题添加到回复
  2. 如果客户端发送值为If-None-Match
  3. uniqueEtag12标头,则发送304状态响应

    因此,我认为您的请求不包含If-None-Match标题。

    示例代码:

    的index.php:

    <?php
    require 'vendor/autoload.php';
    
    $app = new \Slim\Slim();
    
    $app->get('/hello', function () use ($app) {
        $app->etag('1234');
        echo "Hello world on " . date("Y-m-d H:i:s");
    });
    
    
    $app->run();
    

    使用curl进行测试。

    没有If-None-Match标头: $ curl -i http://localhost:8888/hello

    HTTP/1.1 200 OK
    Host: localhost:8888
    Connection: close
    X-Powered-By: PHP/7.0.15
    Content-type: text/html;charset=UTF-8
    Etag: "1234"
    
    Hello world on 2017-05-04 07:12:40
    

    使用If-None-Match标题:

    $ curl -i http://localhost:8888/hello -H 'If-None-Match: "1234"'
    HTTP/1.1 304 Not Modified
    Host: localhost:8888
    Connection: close
    X-Powered-By: PHP/7.0.15
    Etag: "1234"