作为阅读signalR documentation和jQuery文档的一部分
如果浏览器可以创建XMLHttpRequest对象,则Cors等于true 如果该XMLHttpRequest对象具有withCredentials属性。至 在不支持cors 的环境中启用跨域请求 但是确实允许跨域XHR请求(Windows小工具等),设置 $ .support.cors = true;
我知道不所有浏览器支持CORS
(Access-Control-Allow-Origin: *
)。
但它应该非常简单,无论是支持还是不支持。
我不喜欢这条线:
“在不支持的环境中启用跨域请求 但是做允许跨域XHR请求“
我在这里错过了什么吗?
答案 0 :(得分:3)
通过将$.support.cors
设置为true,您告诉jQuery和SignalR即使jQuery的功能检测指示不支持CORS,执行JS的环境也确实允许跨域XHR。
每当我看到有人将此标志设置为true时,就会出错。 如果在真正不支持CORS的环境中设置为true,SignalR将尝试使用CORS建立与服务器的跨域连接(并且失败),而不是使用可能有效的JSONP 强>
jQuery的功能检测(通过在XHR对象上查找withCredentials属性来工作)通常是准确的,如果不在浏览器中运行,可能不正确< / em>的。这就是为什么给出了在桌面小部件中运行jQuery的例子的原因。在这种情况下,jQuery可能认为环境不支持CORS,因为它确实没有,但环境仍然允许任何跨域请求,无论是否存在Access-Control-Allow-Origin响应中的标头,因为它直接在桌面上而不是在浏览器中运行。
环境可以不支持cors,但允许跨域XHR请求。