【问题标题】:405 Method Not Allowed when using headers in the fetch api在 fetch api 中使用标头时不允许使用 405 方法
【发布时间】:2017-09-13 10:48:08
【问题描述】:

我正在尝试使用 fetch 发出 ajax 请求,但当我这样做时,我收到 405 (Method Not Allowed) 错误。

我是这样执行的:

fetch(url, {
    method: 'get',
    headers: {
        'Game-Token': '123'
    }
});

这给了我一个错误。如果我删除标题,请求就会通过。但是,我需要该标头在服务器上进行验证。

fetch(url, { method: 'get' });

我的 .htaccess 文件中有以下设置:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS, FETCH"
Header set Access-Control-Allow-Credentials "true"
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization, X-CSRF-TOKEN, Game-Token, developerKey"
Header set X-Frame-Options "SAMEORIGIN"
Header set Access-Control-Expose-Headers "Game-Token"

我不确定是什么导致这无法通过。

【问题讨论】:

  • 您将请求发送到哪个 URL?是你自己的 API 还是第三方的?如果是后者,他们是否提供了如何访问 API 的文档?
  • 这是我自己使用 lumen 运行的 API 服务器
  • 看起来在lumen 中我需要在路由中捕获OPTIONS 类型。
  • 检查您的 api 方法,可能会有所不同,这就是您收到此响应的原因。

标签: javascript php ajax laravel .htaccess


【解决方案1】:

所以,这与JavaScript.htaccess 无关。相反,它与Lumen 有关。我们需要捕获OPTIONS 请求并回复。我们所做的是创建一个中间件文件,该文件检查 OPTIONS 方法并以 200 响应。

use Closure;

class CorsMiddleware
{

    public function handle($request, Closure $next)
    {

        if ($request->isMethod('OPTIONS'))
        {
            return response('',200);
        }

        return $next($request);
    }
}

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 2014-08-21
    • 2016-04-18
    • 2012-09-21
    • 1970-01-01
    • 2018-06-04
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多