我正在尝试向我的API发出HTTP GET请求,并且它返回OPTIONS 405 (Method Not Allowed)
和
从源头以“ apiurl”访问XMLHttpRequest “ http://localhost:4200”已被CORS政策屏蔽:对 预检请求未通过访问控制检查:否 请求中存在“ Access-Control-Allow-Origin”标头 资源。
下面是我的代码:
const header = new HttpHeaders();
const request_header = header.append('Authorization', this.token.toString());
console.log(request_header.get('Authorization'));
this.urlList = buildUrl('myurl/', {path: 'mypath'});
return this.http.get(this.urlList,{headers: request_header} );
我已经尝试在Postman,C#控制台应用程序和ASP.NET WebForms中执行相同的操作,但是效果很好,但是在Angular中我遇到了上面提到的错误。我在TypeScript中也有一个用于登录的HTTP GET请求,该请求完全有效。
**注意:我无权访问后端,但是基于C#和Postman,它可以正常工作。
更新: 谢谢大家,是为了让我知道我最终使用了 Flask ,它带有角度地发出请求,而且很棒。
答案 0 :(得分:2)
这是CORS问题。托管REST API的Web服务器与托管Angular静态文件的Web服务器在不同的域上运行。
确保您不在单独的域或类似域上的localhost和REST API上运行Angular。理想情况下,您都应在同一域中运行。
配置REST API托管服务器,以允许来自Angular托管服务器(本地主机)的CORS。
答案 1 :(得分:1)
邮递员在这里获取资源不会有任何问题。
但是,当您从Angular服务器发出的请求遇到Cross Origin错误时,您需要使用在Access-Control-Allow-Origin标头中设置了角度服务器地址的API来获取后端集请求的资源。
如果将Access-Control-Allow-Origin标头设置为*,它将允许任何服务器获取资源,但这并不安全,因为任何人都可以在未经您许可的情况下获取您的资源。