Javascript 如果您无意将响应作为脚本进行评估,那么为什么会阻止跨域AJAX?

Javascript 如果您无意将响应作为脚本进行评估,那么为什么会阻止跨域AJAX?,javascript,ajax,browser,cross-domain,Javascript,Ajax,Browser,Cross Domain,假设我想使用AJAX从不受信任的不同域检索json文件。 然后,我将响应解析为javascript对象,而不进行任何脚本计算。 cookie未随我的请求一起发送 我不明白为什么浏览器阻止我这么做 我知道如果我将响应作为脚本进行评估,那么这将是一个安全问题 我理解,要实现上述目标,还有一些变通办法 是否有理由阻止我的特定场景,或者只是意外地陷入了同一起源的拉网 谢谢 假设服务器不支持CORS,跨域AJAX是可能的,但远程服务器需要支持,并且可能存在某些头限制 对于大多数应用程序来说,JSONP不是

假设我想使用AJAX从不受信任的不同域检索json文件。 然后,我将响应解析为javascript对象,而不进行任何脚本计算。 cookie未随我的请求一起发送

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

我知道如果我将响应作为脚本进行评估,那么这将是一个安全问题

我理解,要实现上述目标,还有一些变通办法

是否有理由阻止我的特定场景,或者只是意外地陷入了同一起源的拉网

谢谢


假设服务器不支持CORS,跨域AJAX是可能的,但远程服务器需要支持,并且可能存在某些头限制

对于大多数应用程序来说,JSONP不是必需的。如果远程服务器不支持CORS,那么您将陷入同源垃圾中,必须使用JSONP

注:


较旧的浏览器不支持CORS。您可能想使用jQuery或类似的框架,我在Mootools和跨域AJAX方面遇到了麻烦,因为我不知道如何删除一些默认的头。jQuery在我的设置中是开箱即用的。

跨域AJAX是可能的,但远程服务器需要支持,并且可能存在某些头限制

对于大多数应用程序来说,JSONP不是必需的。如果远程服务器不支持CORS,那么您将陷入同源垃圾中,必须使用JSONP

注:

较旧的浏览器不支持CORS。您可能想使用jQuery或类似的框架,我在Mootools和跨域AJAX方面遇到了麻烦,因为我不知道如何删除一些默认的头。jQuery在我的设置中是开箱即用的

。。。您不打算将响应作为脚本进行评估吗

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

第二,同样的来源/原产地限制也会阻止其他事情:例如,参见

。。。您不打算将响应作为脚本进行评估吗

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

第二,同样的来源/原产地限制也会阻止其他事情:例如,参见

我认为这并不能真正回答问题。OP不是问怎么做,而是问为什么它通常不被启用。好吧,它是在新浏览器的浏览器端启用的。。。这样的请求失败的唯一原因是服务器不支持它,或者请求头错误。好的,那么我将得到纠正。如果你能更清楚地说明OP的假设是错误的,也许会有所帮助。无论如何,谢谢你的澄清!我添加了CORS服务器假设。旁白:在服务器上做出的决策是如何使客户端更加安全的?在我的特定场景“不受信任的服务器”中,您得到了什么以前没有的额外安全性?如果服务器支持CORS,那么您可以将数据作为JSON而不是脚本获取,这样您就可以使用JSON.stringify而不是eval eval,这是一种很好的方法来破坏您可能知道的内容。我不知道为什么跨域AJAX在默认情况下不起作用,因为它比我们必须进行的JSONP攻击安全得多。我认为这并不能真正回答问题。OP不是问怎么做,而是问为什么它通常不被启用。好吧,它是在新浏览器的浏览器端启用的。。。这样的请求失败的唯一原因是服务器不支持它,或者请求头错误。好的,那么我将得到纠正。如果你能更清楚地说明OP的假设是错误的,也许会有所帮助。无论如何,谢谢你的澄清!我添加了CORS服务器假设。旁白:在服务器上做出的决策是如何使客户端更加安全的?在我的特定场景“不受信任的服务器”中,您得到了什么以前没有的额外安全性?如果服务器支持CORS,那么您可以将数据作为JSON而不是脚本获取,这样您就可以使用JSON.stringify而不是eval eval,这是一种很好的方法来破坏您可能知道的内容。我不知道为什么跨域AJAX在默认情况下不起作用,因为它比我们必须进行的JSONP攻击要安全得多。当然,一旦您向站点“X”提供了您的信息,他们就可以随心所欲地使用它,而不必理会任何AJAX调用?@Pumbaa:演示很有趣,但没有明确回答我的问题。很抱歉,您粘贴的链接似乎没有回答我的具体问题。@adam77-该链接解释了阻止您的脚本读取其他站点的脚本的原因源代码保护用户不受您的脚本利用这些信息做坏事。请详细说明您的第二点。当然,一旦你给了网站“X”你的信息,那么t
他们可以用它做任何他们喜欢的事情,而不管任何AJAX调用?@Pumbaa:很有趣的演示文稿,但没有明确回答我的问题。很抱歉,您粘贴的链接似乎没有回答我的具体问题。@adam77-该链接解释说,阻止您的脚本读取其他来源的脚本可以保护用户不受您的脚本影响利用这些信息做一些令人讨厌的事情。所以我遇到了这个,它正是为我描述的用例而设计的。为什么它没有获得更多的支持呢?来自w3:JSONRequest已经被Web应用程序工作组考虑过了,并且该工作组得出结论认为它不符合文档化的要求。JSONRequest是一个特定的API,不能处理跨源XSLT,也不能处理同一源XMLHttpRequest今天可以以跨源方式处理的相同场景,例如使用REST体系结构样式操纵资源???所以我遇到了这个,它正是为我描述的用例而设计的。为什么它没有获得更多的支持呢?来自w3:JSONRequest已经被Web应用程序工作组考虑过了,并且该工作组得出结论认为它不符合文档化的要求。JSONRequest是一个特定的API,不能处理跨源XSLT,也不能处理同一源XMLHttpRequest今天可以以跨源方式处理的相同场景,例如使用REST体系结构样式操纵资源???