角度:HTTP GET请求-选项405(不允许使用方法)

时间:2018-12-14 14:35:11

标签: angular typescript api http cors

我正在尝试向我的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 ,它带有角度地发出请求,而且很棒。

2 个答案:

答案 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标头设置为*,它将允许任何服务器获取资源,但这并不安全,因为任何人都可以在未经您许可的情况下获取您的资源。