我知道已经有一些关于该主题的问题,但我似乎无法找到解决问题的方法。
我是 Angular 4 的新手,我正在尝试使用外部自定义 API 构建一个简单的创建/更新/删除服务。
我首先遇到了 CORS 问题,但通过在 API 的服务器端设置“Access-Control-Allow-Origin” header 解决了这个问题。
现在我的 GET/PATCH 和 DELETE 请求工作正常,但我的“POST”仍然捕获错误。
这是“奇怪”的部分。
当我查看 google chrome 开发者工具的“网络”选项卡时,我同时看到“OPTIONS”和“POST”请求(正如 angular 应该做的那样),但只有“OPTIONS”具有“访问控制” -Allow-Origin: http://localhost:3003 “在响应 header 中。
但是他们都发送了“200”响应代码。 (这里是 some screenshots )
为什么帖子会中断而其他人却能正常工作?
以下是我的服务中的一些代码示例:
private headers = new Headers({'Content-Type': 'application/json'});
// works
update(id: number, fields: any): Promise<Tag> {
const url = `${this.tagsUrl}/${id}`;
return this.http
.patch(url, JSON.stringify(fields), {headers: this.headers})
.toPromise()
.then(res => res.json())
.catch(this.handleError);
}
// doesn't work
create(tagName: string, tagType: number): Promise<any> {
return this.http
.post(this.tagsUrl, JSON.stringify({name: tagName, tagType: tagType}), {headers: this.headers})
.toPromise()
.then(res => res.json())
.catch(this.handleError);
}
在此先感谢您提供的任何帮助!
迈克尔
最佳答案
终于找到问题出在哪里了
它来 self 的本地服务器配置。我不得不从我的 php.ini 中取消注释这一行:
always_populate_raw_post_data = -1
它现在按预期工作。
感谢您的帮助。
关于javascript - Angular 4 : No 'Access-Control-Allow-Origin' , 但仅限发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46545712/