gpt4 book ai didi

javascript - $.support.cors 澄清?

转载 作者:行者123 更新时间:2023-11-27 22:32:06 25 4
gpt4 key购买 nike

作为读取信号的一部分R documentation和 jQuery 的文档

jQuery's docs states :

Cors is equal to true if a browser can create an XMLHttpRequest object and if that XMLHttpRequest object has a withCredentials property. To enable cross-domain requests in environments that do not support cors yet but do allow cross-domain XHR requests (windows gadget, etc), set $.support.cors = true;

我知道不是所有浏览器都支持CORS (Access-Control-Allow-Origin: *)。

但它应该很简单,要么支持,要么不支持。

我不明白这条线:

"To enable cross-domain requests in environments that do not support cors yet but do allow cross-domain XHR requests"

我是不是漏掉了什么?

最佳答案

通过将 $.support.cors 设置为 true,您告诉 jQuery 和 SignalR 即使 jQuery 的功能检测表明不支持 CORS,执行 JS 的环境确实允许跨域 XHR .

每次我看到有人将此标志设置为 true 时,都是错误的。 如果在真正不支持 CORS 的环境中设置为 true,SignalR 将尝试使用 CORS 建立与服务器的跨域连接(并失败),而不是使用可能有效的 JSONP .

jQuery 的功能检测(通过查找 XHR 对象上的 withCredentials 属性来工作)通常是准确的,只有在在浏览器中运行时才可能不正确。这就是为什么给出了在桌面小部件中运行 jQuery 的示例。在这种情况下,jQuery 可能会认为环境不支持 CORS,因为它确实不支持,但无论响应中是否有 Access-Control-Allow-Origin header ,环境仍将允许任何跨域请求因为它直接在桌面上运行,而不是在浏览器中运行。

这就是环境如何既支持 cors,又允许跨域 XHR 请求。

关于javascript - $.support.cors 澄清?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17013023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com