为什么跨域AJAX被阻止*如果*您无意将响应评估为脚本?

时间:2011-04-17 06:49:57

标签: javascript ajax browser cross-domain

假设我想使用AJAX从不受信任的不同域中检索json文件。 然后我将响应解析为javascript对象,而不进行任何脚本评估。 (我的请求不会发送cookie。)

我不明白为什么浏览器会阻止我这样做。

据我所知,如果我将响应评估为脚本,那么这将是一个安全问题。

我知道有一些解决方法可以实现上述目标。

是否有理由应该阻止我的特定情况,或者是否只是意外地陷入同源拉网?

感谢。

(假设服务器不支持CORS)

2 个答案:

答案 0 :(得分:3)

  

...您无意将响应评估为脚本?

首先,浏览器安全无法确定您打算做什么。

其次,设计相同的源/源限制也可以防止其他事情:例如:看到 http://blogs.msdn.com/b/ieinternals/archive/2009/08/28/explaining-same-origin-policy-part-1-deny-read.aspx

答案 1 :(得分:1)

可以使用跨域AJAX,但远程服务器需要支持CORS,并且可能存在某些标头限制。

大多数应用程序不需要JSONP。如果远程服务器不支持CORS,那么你就会遇到同源垃圾而你必须使用JSONP。

注意:

旧版浏览器不支持CORS。你可能想要使用jQuery或类似的框架(我遇到了Mootools和跨域AJAX的问题,因为我无法弄清楚如何删除一些默认的头文件.jQuery在我的设置上为我开箱即用-up。