检测跨域 XMLHttpRequests 的服务器/站点支持?
Posted
技术标签:
【中文标题】检测跨域 XMLHttpRequests 的服务器/站点支持?【英文标题】:Detect server/site support for cross-domain XMLHttpRequests? 【发布时间】:2012-03-15 02:12:28 【问题描述】:我很想看看用什么最小的跨浏览器 javascript 代码(jQuery 也可以)来验证我希望发送跨域 AJAX 请求的站点是否支持CORS
。
我知道 jQuery 有一种方法可以检查 浏览器 是否支持它。但我真的希望能够检查远程站点是否也支持它。
我以为我只需要检查 HTTP 标头,但是当尝试向不特别支持它的站点执行跨域请求时,XHR 当然会抛出异常。
但是有没有办法检查XMLHttpRequest
抛出的异常是由于站点不支持CORS
而不是其他问题? (它不必支持 XDomainRequest。)
无论如何,我不确定使用 AJAX 获取 HTTP HEAD
的最佳最小/最快跨浏览器方式,我认为这是一种轻量级方式,而不是获取页面等。
用例:一旦我知道浏览器和 AJAX 提供程序是否支持CORS
,我可以选择是发送更有功能的JSON
/CORS
请求还是在必要时回退到JSONP
请求。
【问题讨论】:
【参考方案1】:就specification而言,这是不可能的。
如果出现网络错误:如果出现 DNS 错误,TLS 协商 失败或其他类型的网络错误,应用网络错误 脚步。不要请求任何类型的最终用户交互...
否则:执行资源共享检查。如果返回失败,请应用网络错误步骤...
没有特殊的方法来识别不允许使用 CORS 的情况,因为在任何情况下都会应用 network error steps。
【讨论】:
以上是关于检测跨域 XMLHttpRequests 的服务器/站点支持?的主要内容,如果未能解决你的问题,请参考以下文章
cors跨域之简单请求与预检请求(发送请求头带令牌token)