我在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事件)时,都会遇到此错误。
任何人都可以给我一些线索进行调查
答案 0 :(得分:0)
首先,介绍一下CORS:
跨源资源共享(CORS)是一种允许 网页上的受限资源,需要从另一个域请求 在提供第一个资源的域之外。1 页面可以自由嵌入跨域图片,样式表,脚本, iframe和视频。[2]某些“跨域”请求,尤其是Ajax 相同来源的安全策略默认禁止请求。
这是在所有浏览器中实施的安全措施,可防止未经授权的网站使用您的API呈现数据。 尽管您的呼叫使用邮递员进行,但邮递员与服务器进行通信的方式与实际的浏览器不同,后者实现了额外的安全性以改善用户体验。
现在,要使其正常运行,您可以:
1)完全禁用CORS。这是不安全的,应将其限制在开发环境中,但另一方面,它可以让您快速开始使用角度应用程序。
2)如果您使用的是域名,则可以:
a)将您当前的Angular应用的地址设置为有效/允许的CORS地址。
b)手动实现OPTIONS方法,并将其设置为返回带有响应的Access-Control-Allow-Origin
标头。
我的建议是选择2a。
对于具体的实现,请检查您所选择的python(后端)平台的api文档。