API调用已被CORS政策阻止| Angular-Python

时间:2019-11-19 08:52:43

标签: python angularjs iis cors cgi

我在UI(AngularJs)端收到此错误。

  

已从来源https://MyLinuxServer/MyAPI/访问https://MyWindowsServer/处的XMLHttpRequest   被CORS政策封锁:对预检请求的响应未通过   访问控制检查:它没有HTTP正常状态。

使用IIS在Windows服务器(MyWindowsServer)中部署了AngularJS项目。在内部,它基于UI事件(如按钮单击)调用在Linux Box(MyLinuxServer)中部署的API(Python)。

我已经在POSTMAN中测试了API,它们工作正常。

该门户已成功启动,并且可以从我的本地计算机浏览应用程序的仪表板(这段时间内没有API调用),但是当从Angular端到Linux端调用任何API(UI事件)时,都会遇到此错误。

任何人都可以给我一些线索进行调查

1 个答案:

答案 0 :(得分:0)

首先,介绍一下CORS

  

跨源资源共享(CORS)是一种允许   网页上的受限资源,需要从另一个域请求   在提供第一个资源的域之外。1   页面可以自由嵌入跨域图片,样式表,脚本,   iframe和视频。[2]某些“跨域”请求,尤其是Ajax   相同来源的安全策略默认禁止请求。

这是在所有浏览器中实施的安全措施,可防止未经授权的网站使用您的API呈现数据。 尽管您的呼叫使用邮递员进行,但邮递员与服务器进行通信的方式与实际的浏览器不同,后者实现了额外的安全性以改善用户体验。

现在,要使其正常运行,您可以:

1)完全禁用CORS。这是不安全的,应将其限制在开发环境中,但另一方面,它可以让您快速开始使用角度应用程序。

2)如果您使用的是域名,则可以:

a)将您当前的Angular应用的地址设置为有效/允许的CORS地址。

b)手动实现OPTIONS方法,并将其设置为返回带有响应的Access-Control-Allow-Origin标头。

我的建议是选择2a。

对于具体的实现,请检查您所选择的python(后端)平台的api文档。