我知道关于这个主题已经有一些问题,但我似乎无法找到解决问题的方法。
我对angular 4很新,我正在尝试使用外部自定义API构建一个简单的创建/更新/删除服务。
我首先遇到CORS问题,但通过设置" Access-Control-Allow-Origin" api服务器端的标题。
现在我的GET / PATCH和DELETE请求工作正常,但我的" POST"仍然发现错误。
这是"奇怪的"一部分。
当我检查"网络"谷歌浏览器的开发工具选项卡,我看到了" OPTIONS"然后" POST"请求(作为角度应该做),但只有" OPTIONS"有"访问控制 - 允许 - 来源:http://localhost:3003"在响应标题中。
然而,他们都发送了一个" 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);
}
提前感谢您提供任何帮助!
迈克尔
答案 0 :(得分:1)
我终于找到了问题所在。
它来自我的本地服务器配置。我不得不从我的php.ini取消注释这一行:
always_populate_raw_post_data = -1
它现在按预期工作。
感谢您的帮助。