我确信我不是唯一一个在使用外部(甚至内部)API端点进行API调用时,使用/使用CORS
插件进行浏览器或使用–disable-web-security标志的人.我使用此插件来制作与Google Maps相关的API调用.但在同一个应用程序中,ParseSDK API调用不需要CORS或–disable-web-security标志.
我的问题是:为什么这些端点的行为不同,CORS插件如何解决问题(即使我们无法控制这些API)?
提前致谢.
最佳答案
那个插件做的是非常不负责任的;它实际上禁用了相同的原始策略,该策略强制特定来源的网站只能向该来源发出请求.
相同的原始策略实际上只是阻止网站读取GET / POST请求的响应,请求本身就是,因为它被认为是保存.
随着时间的推移,这个良好的安全功能成为负担,人们使用像JSONP这样的解决方法.
因此,我们获得了一种新的,标准化的方式来访问外国来源:
CORS(跨源资源共享)是一种允许Web服务器指定允许另一个源访问其内容的机制.这是通过Access-Control-Allow-Origin:example.com完成的,即使响应来自不同的来源,它也允许example.com访问响应.
Access-Control-Allow-Credentials:true还允许在请求中发送包含cookie和HTTP Basic身份验证的凭据.
您还可以为Access-Control-Allow-Origin:*指定通配符,该通配符允许所有网站访问此响应.但是,执行此操作时,必须指定Access-Control-Allow-Credentials:false,因此不会公开凭据.
这是在互联网上实现公共可访问AJAX API的唯一正确方法.
但是,这个插件只是完全禁用相同的原始策略,这是非常危险的.