クロスドメインXMLHttpRequestのブラウザーサポートを検出しますか?
-
08-07-2019 - |
質問
Firefox 3.5のクロスドメインXMLHttpRequestsを実行する機能を利用するJavascriptに取り組んでいますが、サポートされていない場合は正常に失敗します。
実際にクロスドメインリクエストを行うこととは別に、ブラウザのサポートを検出する方法はありますか?
解決
今後の参照のために、CORS機能の完全な検出は次のようになります。
//Detect browser support for CORS
if ('withCredentials' in new XMLHttpRequest()) {
/* supports cross-domain requests */
document.write("CORS supported (XHR)");
}
else if(typeof XDomainRequest !== "undefined"){
//Use IE-specific "CORS" code with XDR
document.write("CORS supported (XDR)");
}else{
//Time to retreat with a fallback or polyfill
document.write("No CORS Support!");
}
JSBinを使用してこのテストをライブで試して、IE、Firefox、Chrome、Safari、およびオペラ。
非ブラウザ環境では、クロスドメインXHRをサポートするがサポートしないエッジケースがありますが、XHR2 / CORSはサポートされません。このテストでは、これらの状況は考慮されません。
他のヒント
http://hacks.mozilla.orgによると/ 2009/07 / cross-site-xmlhttprequest-with-cors / 使用できるはずです:
if ('withCredentials' in new XMLHttpRequest()) {
/* supports cross-domain requests */
}
(注:このページには、Chrome 2がこのテストに失敗したというコメントがあります(ただし、クロスドメインリクエストをサポートしています)。Chrome3をテストし、テストに合格しています。)
ブラウザがクロスドメインAPI をサポートしているからといって、それが意味するものではないことに留意してくださいターゲットサーバーはリクエストの完了を許可します。
EasyXDM をご覧になるとよいでしょう。これはクロスブラウザの癖を包み、使いやすいものを提供しますそのブラウザに最適なメカニズムを使用して、異なるドメイン間でクライアントスクリプトで通信するためのAPI(例: postMessage 可能な場合は、その他のメカニズムを使用できます)。
明らかに、そのライブラリはブラウザ機能の検出の問題を解決しているので、その経験から利益を得ることができます。 :-)
IE8には XDomainRequest オブジェクトもありますこれを使用してRSSをテキストとして取得し、後でDOMに解析できます。