2012-02-24 38 views
4

我很想看看我想發送跨域AJAX請求的站點是否支持CORS,可能用最少的跨瀏覽器JavaScript代碼(jQuery也可以)。檢測跨域XMLHttpRequests的服務器/站點支持?

我知道jQuery有一個方法來檢查瀏覽器是否支持它。但我真的希望能夠檢查是否遠程站點也支持它。

我以爲我只需要檢查一個HTTP標頭,但當然,XHR會在嘗試向不特別支持它的網站發出跨域請求時引發異常。

但是有沒有辦法檢查由XMLHttpRequest拋出的異常是由於該網站不支持CORS而不是其他問題? (它不必支持XDomainRequest。)

在任何情況下,我不確定使用AJAX獲取HTTP HEAD的最佳最小/最快跨瀏覽器方式,我認爲這是輕量級的方式而不是抓取一個頁面等

使用案例:一旦我知道是否瀏覽器和AJAX提供商的支持CORS與否,我可以選擇是否發送更多的其他功能JSON/CORS請求或回落到JSONP請求必要時。

回答

1

至於specification,這是不可能的。

If there is a network error: In case of DNS errors, TLS negotiation failure, or other type of network errors, apply the network error steps. Do not request any kind of end user interaction...

Otherwise: Perform a resource sharing check. If it returns fail, apply the network error steps...

有確定在哪些CORS是不允許的情況下沒有特殊的方式,因爲network error steps在任何情況下都適用。