这个问题已经在这里有一个答案:
- 为什么不加入CORS标头的选项航线允许浏览器访问我的API? 29个回答
- 如何访问控制允许来源头的工作? 13个回答
- 的XMLHttpRequest不能加载XXX否“访问控制允许来源”标题 6答案
前端:Angular5
后端:爪哇(一Wildfly 8.x的服务器上运行)
在发送HTTP POST
请求,与content-type: 'application/json'
从我的角度应用到服务器上,我得到以下错误:
无法加载的http://本地主机:8080 / MYK / API / V1 /活动/的addEvent :响应预检请求未通过访问控制检查:否“访问控制允许来源”标题存在于所请求的资源。 原产地“ 的http://本地主机:4200 ”因此不允许访问。 响应有HTTP状态代码403。
这是针对该请求的代码:
const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) }; this.http.post("http://localhost:8080/myk/api/v1/events/addevent", jsonPayload, httpOptions).subscribe();
上检查,我发现,而不是一个POST
请求, OPTIONS
请求正在取得(如根据上CORS和预检请求此MDN文章 )。
然而,当我使用邮差试过了同样的要求,它的工作完美的罚款。
如何邮差不面对的一个问题, OPTIONS
当我没有处理请求OPTIONS
在服务器的请求?
另外,我该怎么办(同时保持相同的content-type
而无需修改服务器端代码)来解决这个问题?
注1:虽然这个问题解决了同样的问题,建议的解决方案需要更改的内容类型。
注2:当我运行它试图使用,使POST请求其他应用程序(设计,而不是我,在Angularjs) ajax
调用,它工作正常。 (我不和明白为什么这个作品,除此之外,与angular5答案将不胜感激。我列入本说明的情况下,它搞清楚与Angular5应用问题帮助)
编辑:这可能是近乎挑剔,但我专门找,试图通过修改客户端代码,而不是通过使用扩展或与浏览器的任何修改,以解决上述。 但是,如果这些方法都可以,我愿意改变服务器端代码。