nginx + php7.0 返回状态码永远是200

在windows上配置好了nginx+php的环境
但是在php中通过

header('http/1.1 403 Forbidden');

来尝试返回403缺没用,看浏览器接收到header,状态码却是200。再尝试了

http_response_code(403);

或者laravel的

Response::json($res,403);

全部都无效,永永远远地返回200的状态码?这是怎么回事?怎么才可以改变状态码?

阅读 4.7k
2 个回答

LZ你好,我刚刚试过我的环境,没问题,估计是你Laravel中调错了。

实验1:

//test.php
<?php
header('http/1.1 403 Forbidden');

浏览器测试:
图片描述

实验2:
在Laravel的IndexController.php中新建test动作

public function test(){
        return (new Response('页面禁止访问', 403))->header('Content-Type', 'text/html');
    } 

浏览器测试:
依旧403

把php.ini里面的

cgi.rfc2616_headers = 1;

改成

cgi.rfc2616_headers = 0;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题