Angular 4:No' Access-Control-Allow-Origin',但仅限发布请求

时间:2017-10-03 13:25:26

标签: javascript angular api cors

我知道关于这个主题已经有一些问题,但我似乎无法找到解决问题的方法。

我对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);
}

提前感谢您提供任何帮助!

迈克尔

1 个答案:

答案 0 :(得分:1)

我终于找到了问题所在。

它来自我的本地服务器配置。我不得不从我的php.ini取消注释这一行:

always_populate_raw_post_data = -1

它现在按预期工作。

感谢您的帮助。