Laravel 405对OPTIONS请求的响应

时间:2018-12-08 08:15:41

标签: php laravel apache laravel-5 cors

在Laravel中,我们必须通过中间件或其他方式处理飞行前请求。就我而言,我做了很多,但是没有解决!

这是我尝试过的,

  • 通过中间件处理 在这种情况下,我确实创建了一个新的中间件并将此代码作为handle方法。

public function handle($request, Closure $next) { return $next($request) ->header('Access-Control-Allow-Origin', '*') ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); }

,然后将其添加到 kernel.php

$middleware数组中
  • 使用laravel-cors

我使用了 laravel-cors 库来处理cors,但无法正常工作

  • public / index.php
  • 中添加cors句柄代码

我在 public / index.php 文件顶部添加了以下代码,

if (isset($_SERVER["HTTP_ORIGIN"]) === true) {
    $origin = $_SERVER["HTTP_ORIGIN"];
    $allowed_origins = array(
        "https://tapesh.io",
        "http://tapesh.io",
        "http://my.tapesh.io",
        "http://panel.tapesh.io",
    );
    if (in_array($origin, $allowed_origins, true) === true) {
        header('Access-Control-Allow-Origin: ' . $origin);
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Allow-Methods: *');
        header('Access-Control-Allow-Headers: Content-Type, X-Auth-Type, Origin');
    }
    if ($_SERVER["REQUEST_METHOD"] === "OPTIONS") {
        exit; // OPTIONS request wants only the policy, we can stop here
    }
}
  • Apache配置

我还检查了apache错误日志。错误是这样的,

  

[2018年12月7日星期六:35:36.678676] [allowmethods:error] [pid 7902:tid   139855840466688] [客户端84.417.45.0:4012] AH01623:客户端方法   服务器配置拒绝:“ OPTIONS”   /home/main/domains/example.com/private_html/api

我用google搜索了一下,发现用apache处理,我应该将Require all granted添加到我域的Apache 2.4配置文件中。我做了,但是没有工作!

我还必须说,在其他项目中,我使用了 laravel-cors 库,它解决了我的问题。

我真的很困惑!

1 个答案:

答案 0 :(得分:0)

尝试在您的route.php文件中添加标题:

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

如果需要,添加更多Allow- *标头。但是,当然,我建议您在“ routes.php”问题的“在public / index.php中添加cors句柄代码”部分中使用您的代码,因为这是一个更安全的选择