【发布时间】:2018-01-11 09:42:19
【问题描述】:
使用 NelmioCorsBundle 解决。
我将 angular 4.3.3 用于前端,Symfony3 用于后端,我也使用 FosRestBundle。
在 Angular 中,我正在使用 HttpClient 发送或请求一些数据。
请求数据运行良好,我可以显示结果,但问题是当我尝试发送数据时出现此 cors 错误
另一方面,我可以使用 postman
发布 json 数据这是错误:
1:1 XMLHttpRequest cannot load
http://127.0.0.1/rest/web/app_dev.php/api/comments/new/1. Response for preflight
has invalid HTTP status code 405
Error occured.
{"content":"test comment","email":"test@gmail.com"}
这是代码 typeScript:
import {HttpClient, HttpErrorResponse, HttpHeaders} from '@angular/common/http';
constructor(private http: HttpClient, private globals: Globals, private activatedRoute: ActivatedRoute) {
}
postComment(post) {
const body = JSON.stringify(post);
this.http.put(this.globals.baseUrl + 'comments/new/' + this.id, body).subscribe(
res => {
console.log(res);
},
err => {
console.log('Error occured.');
console.log(body)
}
);
}
在 symfony 项目中:web/.htaccess
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
【问题讨论】:
-
405 是“不允许的方法”,对吧?您的服务器需要配置为允许 OPTIONS 请求,并以 200 或 204 成功响应 OPTIONS
-
@sideshowbarker,当我使用 Postman 时,是的,我用 "content-type: application/json" 发送它,但我不知道如何使用 Angular 设置标题:/
-
所以您确实需要弄清楚如何设置请求标头,但正如我评论的那样,我认为 405 表明您需要解决的直接问题是您的服务器未配置为正确响应 OPTIONS 请求
-
我正在使用 Symfony3、FosRestBundle 作为后端,并且我已经配置了 Header 集 Access-Control-Allow-Origin "*"。我将在帖子中添加它
-
我已经用“NelmioCorsBundle”解决了:)
标签: angular symfony typescript cors fosrestbundle