CORS插件/ --disable-web-security如何在浏览器上运行?

时间:2016-07-04 22:11:26

标签: javascript ajax api cors

我确定我不是唯一一个在对外部(甚至内部)API进行API调用时使用/使用CORS插件进行浏览器或--disable-web-security标记的人端点。我使用此插件来制作与Google Maps相关的API调用。但是在同一个应用程序中,ParseSDK API调用不需要CORS--disable-web-security标志。

我的问题是:为什么这些端点的行为不同以及CORS插件如何解决问题(即使我们无法控制这些API)?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您发布的链接(您是否阅读了说明?)指定了扩展程序的确切内容 - 它会将Access-Control-Allow-Origin: *标头添加到所有响应中。这是一个CORS标头,通常服务器发送该标头以通知浏览器您可以从任意来源发出请求。

Parse SDK可能在其服务器端支持CORS。

仅为了您的信息,当大多数人说CORS时,他们并不是指浏览器扩展。他们指的是名为CORS的网络标准。以下文档。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

答案 1 :(得分:1)

那么,该插件的作用是非常不负责任的;它实际上禁用了相同的原始策略,该策略强制特定来源的网站只能向该来源发出请求。

相同的原始政策实际上只是阻止网站读取GET / POST请求的响应,请求本身也是如此,因为它被认为是保存。

随着时间的推移,这个良好的安全功能成为了负担,人们使用了像JSONP这样的解决方法。

因此,我们获得了一种新的,标准化的方式来访问外国来源:

CORS(跨源资源共享)是一种允许Web服务器指定允许其他来源访问其内容的机制。这是通过Access-Control-Allow-Origin: example.com完成的,即使响应来自不同的来源,它也允许example.com访问响应。

Access-Control-Allow-Credentials: true还允许在请求中发送包含Cookie和HTTP基本身份验证的凭据。

您还可以为Access-Control-Allow-Origin: *指定通配符,允许所有网站访问此响应。但是,当您执行此操作时,必须指定Access-Control-Allow-Credentials: false,因此不会公开凭据。

这是在互联网上实现公共可访问AJAX API的唯一正确方法。

但是这个插件只是简单地禁用完全相同的原始策略 非常危险