[javascript] 헤더에도 불구하고 Firefox ‘Cross-Origin Request Blocked’

간단한 교차 출처 요청을 시도하고 있으며 Firefox는 다음 오류로 계속 차단합니다.

교차 출처 요청 차단됨 : 동일한 출처 정책이 [url]에서 원격 리소스 읽기를 허용하지 않습니다. 리소스를 동일한 도메인으로 이동하거나 CORS를 활성화하여이 문제를 해결할 수 있습니다. [URL]

Chrome 및 Safari에서 잘 작동합니다.

내가 알 수있는 한이 작동하도록 PHP에 올바른 헤더를 모두 설정했습니다. 내 서버가 응답하는 내용은 다음과 같습니다.

HTTP/1.1 200 OK
Date: Mon, 23 Jun 2014 17:15:20 GMT
Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14+deb7u8
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
Access-Control-Request-Headers: X-Requested-With, accept, content-type
Vary: Accept-Encoding
Content-Length: 186
Content-Type: text/html

Angular, jQuery 및 기본 XMLHTTPRequest 객체를 다음과 같이 사용해 보았습니다.

var data = "id=1234"
var request = new XMLHttpRequest({mozSystem: true})
request.onload = onSuccess;
request.open('GET', 'https://myurl.com' + '?' + data, true)
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
request.send()

… Firefox를 제외한 모든 브라우저에서 작동합니다. 누구든지 이것을 도울 수 있습니까?



답변

이것은 CORS와 관련이없는 것으로 밝혀졌습니다. 보안 인증서에 문제가있었습니다. 잘못된 오류 = 4 시간의 골칫거리.


답변

내 문제는 교차 요청을 보낸 서버에 신뢰할 수없는 인증서가 있다는 것입니다.

다음을 사용하여 교차 도메인에 연결하려는 경우 https 인증서에 대한 예외를 추가해야합니다.

차단 된 링크를 한 번 방문하고 예외를 추가하면됩니다.


답변

Firefox에서 요청이 메시지로 차단되는 것을 발견 한이 질문을 발견했습니다.

이유 : CORS 요청이 성공하지 못했습니다.

머리카락을 뽑은 후 새로 설치된 Firefox 확장 프로그램 인 Privacy Badger가 요청을 차단하고 있다는 것을 알았습니다.

머리를 긁은 후이 질문이 나타나면 설치 한 확장 프로그램 중 어떤 확장 프로그램이 요청을 차단하는지 확인하십시오.

자세한 내용은 이유 : CORS 요청이 MDN에서 성공하지 못했습니다 를 참조하십시오.


답변

2 일 후에 해결책을 찾았습니다.

중요 참고 사항 : 자격 증명 요청에 응답 할 때 서버는 도메인을 지정해야하며 와일드 카드를 사용할 수 없습니다.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials


답변

‘실제’인증서가없는 경우 (따라서 자체 서명 된 인증서를 사용하는 경우) FireFox에서 다음으로 이동할 수 있습니다.

Options > Privacy & Security > (scroll to the bottom) View Certificates > Add Exception.

여기에 위치를 입력하십시오. 예 : https : //wwww.myserver : myport


답변

경고의 한마디. 마침내 Firefox 및 CORS 문제를 해결했습니다.

나를위한 해결책은이 포스트였습니다.

올바른 응답 헤더를 사용하여 Apache에서 CORS (교차 출처 리소스 공유) 설정 | 벤자민 혼

그러나 Firefox는 Apache 서버 (.htaccess 폴더)에 헤더를 설정 한 후 정말 이상하게 작동했습니다.

나는 console.log("Hi FF, you are here A")무슨 일이 일어나고 있는지 확인하기 위해 많은 등을 추가했습니다 .

처음에는 매달린 것처럼 보였습니다 xhr.send(). 그러나 나는 그것이이 진술에 도달하지 못했다는 것을 발견했습니다. 나는 console.log그것 바로 앞에 또 하나를 놓았고 거기에 도착하지 못했습니다. 비록 마지막 console.log것과 새로운 것 사이에 아무것도 없었음에도 불구하고 . 둘 사이에 멈췄어요 console.log.

줄 재정렬, 삭제, 파일에 이상한 문자가 있는지 확인합니다. 나는 아무것도 찾지 못했다.

Firefox를 다시 시작하면 문제가 해결되었습니다.

예, 버그를 신고해야합니다. 너무 이상해서 어떻게 재현해야할지 모르겠다.

주의 사항 : 그리고, 오, 나는 Header always set부분이 아니라 Rewrite*부분을했습니다!


답변

그냥 추가

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

.htaccess연결하려는 웹 사이트의 루트에 있는 파일에.