<script>
태그가 참조하는 파일의 내용을 가져올 수 없습니다. 이는 합당한 이유가 있습니다. 그렇게하면 XHR의 동일 출처 정책을 우회 할 수 있습니다.
고려 : 당신이 respnse의 텍스트를 액세스 할 수있는 경우
<script src="https://www.example.com/private/api/getAuthToken" id="s"></script>
, 당신은이 작업을 수행 할 수있을 것입니다 : 분명히 나쁜
var stolenAuthToken = $('#s').text();
합니다. 따라서 <script>
태그로 가져온 콘텐츠를 읽을 수 없습니다. 출처 간 스크립트 오류이 페이지의 onerror
핸들러에 어떤 유용한 정보를보고하지 않는 경우
특정 상황은 비교적 최근에 change 도입 복잡하다. 악의적 인 사이트가 사용자가 잘 알려진 사이트에 로그인했는지 여부를 추측 할 수있는 정보 유출 보안 구멍을 패치하기 위해 수행되었습니다.
즉, 유용한 정보를 얻지 못합니다. CDN 호스트 스크립트의 오류에 대해서는 이므로 CORS을 사용하여 CDN (또는 기타 동일하지 않은 출처가 아닌) 서버가 onerror
처리기로 전체 오류 세부 사항을 전달하도록 허용하도록 허용했습니다.
우리는 (페이스 북) #363897에 구현 된 window.onerror
음소거 행동을하지 않도록하는 메커니즘이 필요합니다. 정적 스크립트 리소스는 메인 사이트와 다른 도메인의 CDN에서 제공됩니다. 이러한 도메인이 다르기 때문에 우리는 브라우저 오류에 대한 유용한 정보를 수집하지 못하게하는 x-domain 로직에 취약합니다.
이 "기능"은 야생에서 (Firefox 및 Webkit 브라우저에서) 널리 채택되어 현재 프로덕션에서 볼 수있는 대부분의 잡히지 않은 예외에는 실제 정보가 없습니다.
crossorigin
attribute (원래 <img>
위한)
는 자원이 CORS 규칙을로드하도록 지정할 수 있습니다. Mozilla,
WebKit 및
Chrome에서 구현되었습니다. 내
testing에서 불행하게도 당신을 위해
<script src="http://example.com/xdomainrequest" crossorigin="anonymous"></script>
는, 나는 구글 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
...
주 (a CORS 요구를 나타내는) 요청의 Origin
헤더의 유무 및 응답하여 Access-Control-Allow-Origin
헤더의 부재. 따라서 crossorigin
속성을 넣더라도 CORS 검사가 실패하고 스크립트에 오류가 자세히 표시됩니다.
Google CDN 서버에서 CORS를 사용하려면 three-year-old issue이 있어야합니다. 나는 숨을 참지 않을 것이다.
tldr : 당신이 의미있는 오류 메시지를 원하는 경우 동일한 기원에 모든 자바 스크립트 자신을 개최한다.
내가 생각한 것. 영향을받는 사용자와 직접 조사 할 수 있는지 확인합니다. 감사. – Pyro979
이렇게 자세하고 우수한 게시물! – potench