【问题标题】:Why HTTP OPTIONS request doesn't work on PHP-FPM?为什么 HTTP OPTIONS 请求在 PHP-FPM 上不起作用?
【发布时间】:2021-02-16 09:24:24
【问题描述】:

当使用 apache 处理程序而不是 FastCGI / PHP-FPM 时,我可以使用一种解决方法来响应预检 HTTP 请求,检查 REQUEST_METHOD 并返回 http 代码 200。

但是使用 FastCGI 处理程序时,相同的代码不起作用,并且 chrome 无法显示 Access-Control-Allow-Origin is found on request。

有没有办法让它工作?

    $http_origin = $_SERVER['HTTP_ORIGIN'];
    header("Access-Control-Allow-Origin: $http_origin");  
    header("Access-Control-Allow-Headers: Content-Type, Origin, Authorization");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');
    header('Content-Type: application/json');
    
    if ($_SERVER['REQUEST_METHOD'] == "OPTIONS"){
        exit(0);
    } 

【问题讨论】:

    标签: php apache fastcgi


    【解决方案1】:

    删除:

    header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');
    

    重新排列到:

    $http_origin = $_SERVER['HTTP_ORIGIN'];
    
    header("Access-Control-Allow-Headers: Content-Type, Origin, Authorization, X-Auth-Token");
    header('Access-Control-Allow-Credentials: true');
    header("Access-Control-Allow-Origin: $http_origin");
    
    if ($_SERVER['REQUEST_METHOD'] === "OPTIONS"){
        exit(0);
    }
    

    工作得很好。由于遇到问题,我不得不更改 mpm 模块,而今天我需要更改。

    【讨论】:

      猜你喜欢
      • 2020-09-19
      • 2015-04-11
      • 2018-09-20
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多