我正在尝试使用 Angular 开发前端应用程序。由于我添加了授权标头对于 HTTP POST 和 GET 请求,我得到405 不允许的方法,尽管我似乎允许服务器端的一切。
我的 Chrome 浏览器中的调试器说它要求Access-Control-Request-Method: POST
and Access-Control-Request-Headers: authorization
,我的后端允许两者,access-control-allow-methods: GET, POST
and access-control-allow-headers: authorization
, 也access-control-allow-credentials: true
.
我不明白我在这里缺少什么。服务器是一个node.js Express服务器,标头设置如下:
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
});
Where this.http
是 Angular 的一个实例HttpClient
.
我的前端应用程序由我的本地主机域提供服务“http://frontend.localhost/应用程序”,我的后端服务器位于“http://backend.localhost".
我的问题是,我是否缺少一些必须在后端设置的标头?我需要在前端应用程序中设置一些选项吗?