【发布时间】:2019-03-27 17:59:36
【问题描述】:
正如标题所述,我想发出一个没有预检选项的简单 GET 请求,因为服务器没有响应“Access-Control-Allow-Origin”标头,我无法更改这些服务器设置.
我的代码相当简单:
export interface HttpOptions {
headers?: HttpHeaders;
params?: HttpParams;
observe?: 'body';
}
private getProfileDetails() {
const httpOptions: HttpOptions = {
headers: new HttpHeaders({
'Content-Type': 'text/plain'
}),
params: new HttpParams()
.set('service', 'http%3A%2F%2Flocalhost%3A4200')
.append('ticket', this.currentTicket)
};
this.http.get('https://server.address/val', httpOptions).subscribe(data => {
console.log(data);
});
}
由于某种原因,浏览器不断收到错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.
据我了解,这应该是一个简单的 GET 请求,不需要 OPTIONS,所以我有点不知所措。
任何提示将不胜感激。
【问题讨论】:
-
CORS 是一个可怕的问题!最简单的方法是从服务器而不是前端提交请求。在您的后端创建一个发送请求、接收响应并将其发送回您的应用的路由。
-
OPTIONS请求是针对 corss-origin 请求的。您无法删除它们,您的浏览器使用它们来检查端点的有效性。只需在后端接受这些请求,您就可以开始了 -
@trichetriche - 进行了更改,但不知道为什么这应该是评论。当我无法更改 Access-Control-Allow-Origin 设置时如何解决 CORS 问题的问题的答案是从后端发送请求。
-
您可以使用plugin 轻松绕过此问题。
-
@sideshowbarker 是对的,这不一定是预检请求问题,但它仍然是 CORS 问题。最好知道您的错误是拥有后端 CORS 配置。 OP,因为人们拒绝做他们的工作,并不意味着您应该解决他们的懒惰并使用不良做法来满足您的需求...... CORS 配置就像 API 的基础,如果他们不更新他们的代码,我建议你去找他们的主管和他谈谈!
标签: angular http cors http-headers