1
에 200 응답 실패
나는 다음과 같은 코드가 있습니다아약스 프리 플라이트는 옵션 파이어 폭스
- URI를
- readyState가 = 1, 상태 :를 호출 할 때 나는 다음과 같은 경고를 참조
Util.xmlGet = function(uriend, callback) { var xmlhttp; var uri; if (window.XMLHttpRequest) { // code for modern browsers xmlhttp=new XMLHttpRequest(); } else {// code for dinosaurs xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } if(document.URL.startsWith("file://")) { uri = "https://tomcat.realm:8443/worldmodel/worldmodel?"; } else { uri = "/worldmodel/worldmodel?" } alert(uri+uriend); xmlhttp.onreadystatechange=function() { alert("readystate="+xmlhttp.readyState+", status="+xmlhttp.status); if (xmlhttp.readyState==4 && xmlhttp.status==0) { alert("preflight OK"); } if (xmlhttp.readyState==4 && xmlhttp.status==200) { alert("calling back"); callback(xmlhttp.responseXML); } } xmlhttp.open("GET",uri+uriend,true); xmlhttp.setRequestHeader("Content-type","text/xml;charset=UTF-8"); xmlhttp.send(); };
을 = 0
- readyState가 = 2, 상태 = 0
- readyState가 = 4, 상태 = 0
- 프리 플라이트 OK
OPTIONS 요청은 브라우저에서 보내고 "200"응답을 받았습니다. 더 정확하게 다음을 onreadystatechange에서
https://tomcat.realm:8443/worldmodel/worldmodel?type=thing
Request Method:
OPTIONS
Status Code:
HTTP/1.1 200 OK
Request Headers
14:35:30.000
User-Agent:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0
Origin:nullHost:tomcat.realm:8443
Connection:keep-alive
Access-Control-Request-Method:GET
Access-Control-Request-Headers:content-type
Accept-Language:hu,en-us;q=0.8,es;q=0.5,en;q=0.3
Accept-Encoding:gzip, deflateAccept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Response Headers Δ5ms
Server:Apache-Coyote/1.1
Date:Thu, 06 Jun 2013 12:35:30 GMT
Content-Length:0
Allow:GET, HEAD, POST, TRACE, OPTIONS
GET 요청이 전송되지 않습니다, 더 이상 상태. 로컬 파일 시스템에서 html 파일에 (이 파이어 폭스에 대한 도움/보고서 것입니다) 1.0 -
이
은 우분투 캐 노니 컬의 파이어 폭스 21.0 모질라 파이어 폭스에서 이루어졌다.문제는 여기에 무엇입니까?
파이어 폭스 어디서나 당신의 로컬 파일 시스템에있는 파일에서 XHR 요청을 방지하지 않습니다? 우선 보안상의 이유로 동일한 도메인 (로컬 파일 시스템)을 참조 할 수 없기 때문입니다. 동일한 출처 정책으로 인해 다른 도메인에 액세스 할 수 없기 때문에 두 번째입니다. forcecors 플러그인을 설치하고 view => toolbars => addon bar로 활성화하면 어떻게됩니까? 그런 다음 오른쪽 하단 모서리에있는 "cors"텍스트를 클릭하십시오. 이제 어디서나 xhr 요청을 할 수 있습니다. 더 많은 정보를 원하시면 위키피디아를 동일한 원산지 정책으로 확인하십시오. – HMR
힌트를 주셔서 감사합니다. cors에 의해 추가 된 헤더는 웹 콘솔이 보는 것처럼 OPTIONS 응답에 표시되지만 다른 모든 증상은 동일합니다. –
로컬 파일에서 활성화 된 forecors 플러그인을 사용하여 xhr 연결을 열 수 있습니다. JQuery와 (모든 지역)으로 파일을 오픈하고 콘솔에 다음 코드를 붙여 :'$ 아약스 ("http://www.google.com.hk"); 요청이 완료'와 나는의 반응을 볼 수 있었다 콘솔. forcecors가 활성화되어 있지 않으면 요청이 빨간색으로 바뀌고 응답이 표시되지 않습니다. 웹 서버가 올바른 cors 응답 헤더를 보내는 경우 강제 코드없이 작동해야합니다. – HMR