我打算为我们的Javascript代码增加安全性,这些代码嵌入到其他网站上-例如:像分析代码。
用户复制4-5行代码并将其放到他的网站上。作为下一步,代码实际上会下载真正的脚本。
有人建议我使用CORS而不是当前的JSONP调用,因为我可以限制域。
据我所知,CORS只有在添加脚本的html页面需要添加访问域的情况下才会起作用,而如果我为js文件添加访问域,它就不会起作用。
最终的js或html页面的CORS是否打算使用我的脚本?
编辑:
因为它让用户感到困惑,所以我让它变得更简单。
在域A的HTML添加我的脚本从域B喜欢谷歌分析。我可以添加访问域:在呈现我的JS时,还是HTML应该在响应中添加访问域?
发布于 2014-06-27 14:50:32
CORS的工作方式是让您的服务器输出包含允许的域的Access-Control-Allow-Origin
标头。向您的服务器发出ajax请求的站点不需要执行任何特殊操作来启用CORS,不需要进行任何配置。这些站点只需发出普通的XHR请求,浏览器就会在内部处理CORS。
您可以从服务器上的标头控制CORS访问。在CORS中,您还可以控制允许的HTTP谓词,例如POST或GET (Access-Control-Allow-Methods
)或允许的请求头(Access-Control-Allow-Headers
)。
请注意,IE8不支持CORS XHR,微软决定使用XDomainRequest创建自己的CORS实现。因此,如果调用您的服务器的任何站点想要支持IE8,它们将需要使用XDomainRequest而不是XMLHttpRequest。在IE7或更早的版本中,甚至XDomainRequest都不支持CORS。
发布于 2014-06-27 14:52:28
对于这个问题,wiki有一个很好的解释:
可以使用CORS
作为JSONP
模式的现代替代方案。虽然JSONP
仅支持GET
请求方法,但CORS
还支持其他类型的HTTP
请求。使用CORS
使web程序员能够使用常规的XMLHttpRequest
,它支持比JSONP
更好的错误处理。另一方面,JSONP
适用于早于CORS支持的遗留浏览器。大多数现代web浏览器都支持CORS
。此外,虽然JSONP
会在外部站点受到威胁的情况下导致跨站点脚本(XSS
)问题,但CORS
允许网站手动解析响应以确保安全性。
据我所知,只有当添加我的脚本的
页面需要添加访问域时,CORS才会起作用
您可以通过以下方式访问所有域:
Access-Control-Allow-Origin: *
现在CORS
也有了good support。
P.S.IE8-9有自己的XDomainRequest
实现。
https://stackoverflow.com/questions/24445542
复制相似问题