Angular 2 post请求显示此错误。
do_login(username: string,password: string): Observable<string> {
let body = JSON.stringify({"username":username,"password":password});
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.loginUrl, body, options)
.map((response) => {
return response.json();
}
);
}
获取请求正常工作。调用REST客户端时,POST url正常工作
我的代码中缺少什么。谢谢你的帮助。
答案 0 :(得分:1)
这是因为CORS。您无法在服务器端处理预检请求。这是405状态代码所说的内容:
405方法不允许 请求的资源不支持请求方法;例如,表单上的GET请求,要求通过POST显示数据,或者在只读资源上显示PUT请求。
它适用于GET方法,因为您处于简单请求的情况下,而不是预检的请求。它通常是服务器端问题而不是前端/ Angular2问题。
这些文章可以帮助您了解会发生什么:
答案 1 :(得分:1)
涉及CORS,因为在OPTIONS
请求之前有POST
请求。
服务器未对OPTIONS
请求提供有效响应 - 导致您在上面列出的错误。您将需要调查服务器的CORS配置,因为这就是问题所在 - 不在上面的代码中。
如果GET
工作正常,您应该查看Access-Control-Allow-Methods
配置