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

发布于 2024-11-01 17:02:42 字数 267 浏览 1 评论 0原文

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

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

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

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

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

谢谢。

(假设服务器不支持CORS)

Let's say I want to use AJAX to retrieve a json file from an untrusted different domain.
I then parse the response as a javascript object without any script evaluation.
(A cookie is not sent with my request.)

I don't understand why the browser prevents me from doing this.

I understand that if I were to evaluate the response as a script then that would be a security issue.

I understand that there are work-arounds to achieve the above.

Is there a reason that my specific scenario should be prevented, or has it just got accidentally caught up in the same-origin dragnet?

Thanks.

(assuming the server does not support CORS)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狼性发作 2024-11-08 17:02:42

...您不打算将响应作为脚本进行评估?

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

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

... you have no intention of evaluating the response as a script?

Firstly, browser security has no way of determining what you intend to do.

Second, the same source / origin restrictions are designed prevent other things as well: e.g. see
http://blogs.msdn.com/b/ieinternals/archive/2009/08/28/explaining-same-origin-policy-part-1-deny-read.aspx

浴红衣 2024-11-08 17:02:42

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

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

注意:

旧版浏览器不支持 CORS。您可能想使用 jQuery 或类似的框架(我在使用 Mootools 和跨域 AJAX 时遇到了麻烦,因为我不知道如何删除一些默认标头。jQuery 在我的设备上对我来说是开箱即用的-向上。

Cross-domain AJAX is possible, but the remote server needs to support CORS and there may be certain header restrictions.

JSONP is not necessary for most applications. If the remote server does not support CORS, then you're stuck with the same-origin garbage and you'll have to use JSONP.

Note:

Older browsers don't support CORS. You may want to use jQuery or a similar framework (I've had trouble with Mootools and cross-domain AJAX because I couldn't figure out how to remove some of the default headers. jQuery worked out of the box for me on my set-up.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文