405 方法不允许,尽管 CORS
405 Method Not Allowed despite CORS
我正在尝试使用 Angular 开发前端应用程序。由于我将 授权 header 添加到 HTTP POST 和 GET 请求,我得到 405 Method Not Allowed ,尽管我似乎允许服务器端的所有内容。
我的浏览器 Chrome 中的调试器说它要求 Access-Control-Request-Method: POST
和 Access-Control-Request-Headers: authorization
,我的后端也允许 access-control-allow-methods: GET, POST
和 access-control-allow-headers: authorization
作为 access-control-allow-credentials: true
.
我没有看到我在这里遗漏了什么。服务器是 node.js express 服务器,header 设置如下:
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Allow-Headers', 'authorization');
前端代码 (Angular 5) 如下所示:
this.http.request('post', apiUrl, {
headers: new HttpHeaders().set('Authorization', 'Bearer abc'),
}).subscribe(response => {
// some code
});
其中 this.http
是 Angular 的 HttpClient
的实例。
我的前端应用程序是从我的本地主机域“http://frontend.localhost/app", my backend server is located at "http://backend.localhost”提供服务的。
我的问题是,我是否遗漏了一些必须在后端设置的 header?我需要在我的前端应用程序中设置一些选项吗?
我发现我的问题 与 CORS 没有直接关系。我的后端目前只是一个 GraphQL 服务器,它允许 GET 和 POST 请求。
如果我在客户端添加额外的 headers,浏览器将通过预检 OPTIONS 请求检查 CORS,到 URL GraphQL 服务器驻留。这会导致 405 Method Not Allowed 错误,由 GraphQL 服务器产生,而不是由 Express 或浏览器产生。
我正在尝试使用 Angular 开发前端应用程序。由于我将 授权 header 添加到 HTTP POST 和 GET 请求,我得到 405 Method Not Allowed ,尽管我似乎允许服务器端的所有内容。
我的浏览器 Chrome 中的调试器说它要求 Access-Control-Request-Method: POST
和 Access-Control-Request-Headers: authorization
,我的后端也允许 access-control-allow-methods: GET, POST
和 access-control-allow-headers: authorization
作为 access-control-allow-credentials: true
.
我没有看到我在这里遗漏了什么。服务器是 node.js express 服务器,header 设置如下:
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Allow-Headers', 'authorization');
前端代码 (Angular 5) 如下所示:
this.http.request('post', apiUrl, {
headers: new HttpHeaders().set('Authorization', 'Bearer abc'),
}).subscribe(response => {
// some code
});
其中 this.http
是 Angular 的 HttpClient
的实例。
我的前端应用程序是从我的本地主机域“http://frontend.localhost/app", my backend server is located at "http://backend.localhost”提供服务的。
我的问题是,我是否遗漏了一些必须在后端设置的 header?我需要在我的前端应用程序中设置一些选项吗?
我发现我的问题 与 CORS 没有直接关系。我的后端目前只是一个 GraphQL 服务器,它允许 GET 和 POST 请求。
如果我在客户端添加额外的 headers,浏览器将通过预检 OPTIONS 请求检查 CORS,到 URL GraphQL 服务器驻留。这会导致 405 Method Not Allowed 错误,由 GraphQL 服务器产生,而不是由 Express 或浏览器产生。