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

标签 javascript angular api cors

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

我是 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/

相关文章:

javascript - Ionic 2 - 访问 Controller 中的 ngModel

javascript - 如何检查是否加载了 Google Maps API?

javascript - JavaScript 中的原型(prototype)问题

android - Inbrowser android api的

asp.net - DevExpress:如何获取控件客户端的实例并访问其客户端成员?

javascript - 如何显示图片

angular - 在没有包装器 ViewChild 的情况下从组件代码访问 ng-content

javascript - Angular 5 httpClient 和 promise

Angular 7 - 嵌套 Observables

java.net.ConnectException : Connection refused between two microservices via docker