<script>
タグで参照されているファイルの内容を取得することはできません。これは正当な理由があります:そうすることで、あなたはXHRの同じ起源ポリシーを回避することができます。
を考えてみましょう:あなたはrespnseのテキストにアクセスすることができれば
<script src="https://www.example.com/private/api/getAuthToken" id="s"></script>
は、あなたがこれを行うことができるだろう:明らかに悪いです
var stolenAuthToken = $('#s').text();
を。したがって、あなたは決して<script>
タグによって持ち込まれたものの内容を読むことは許されません。クロスオリジンのスクリプトでエラーがページのonerror
ハンドラへいかなる有用な情報を報告しないところ
あなたの特定の状況は比較的最近change導入によって複雑になります。 (これは基本的に、悪意のあるサイトが有名なサイトにログインしているかどうかを推測できる情報漏洩セキュリティホールにパッチを当てるために行われたものです)。
これは、有用な情報CDNでホストされたスクリプトのエラーについてはanother changeとなり、CORSを使用して、CDN(または他の非同一起源)サーバーでonerror
ハンドラに完全なエラーの詳細を渡すことができます。
たち(Facebookは)#363897で実装window.onerror
ミュート動作を無効にするためのメカニズムが必要です。私たちの静的スクリプトリソースは、メインサイトとは異なるドメインのCDN上で提供されます。これらのドメインが異なるため、xドメインのロジックに惑わされ、ブラウザのエラーに関する有用な情報を収集できなくなります。
この「機能」は、野生(FirefoxおよびWebkitブラウザ)で広く採用されており、現在生産中に見られる大部分の未知の例外には、実行可能な情報がありません。
(もともと
<img>
ためのもの)
crossorigin
attributeは、リソースがCORSルールをロードするように指定することができます。 Mozilla、WebKit、およびChromeによって実装されています。あなたのために残念ながら
<script src="http://example.com/xdomainrequest" crossorigin="anonymous"></script>
、私のtestingに、私はGoogleのCDNは、ないがCORSヘッダを送信しないことがわかりました。
GET http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js HTTP/1.1
Host: ajax.googleapis.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://fiddle.jshell.net/josh3736/jm2JU/show/
Origin: http://fiddle.jshell.net
Pragma: no-cache
Cache-Control: no-cache
HTTP/1.1 200 OK
Vary: Accept-Encoding
Content-Type: text/javascript; charset=UTF-8
Last-Modified: Tue, 13 Nov 2012 19:53:02 GMT
Date: Wed, 02 Jan 2013 22:54:25 GMT
Expires: Thu, 02 Jan 2014 22:54:25 GMT
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 93637
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 169036
...
注(CORS要求を示す)要求にOrigin
ヘッダの存在に応答してAccess-Control-Allow-Origin
ヘッダが存在しません。したがって、crossorigin
属性を指定しても、CORSチェックは失敗し、スクラブされたエラーの詳細がスクリプトに送られます。
Google CDNサーバーでCORSを有効にするには、three-year-old issueがあります。私は息を止めないだろう。
tldr:あなたは意味のあるエラーメッセージが必要な場合は、同じ起源に、すべてのJavaScriptを自分でホストする必要があります。
ちょっとわかりました。影響を受けるユーザーと直接調査できるかどうかがわかります。ありがとう。 – Pyro979
詳細、優れた投稿! – potench