동일한 도메인의 CORS 오류?


87

지금 이상한 CORS 문제가 발생하고 있습니다.

다음은 오류 메시지입니다.

XMLHttpRequest cannot load http://localhost:8666/routeREST/select?q=[...] 
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin

두 서버 :

  • localhost : 8666 / routeREST / : 이것은 간단한 Python Bottle 서버입니다.
  • localhost : 8080 / : Javascript 응용 프로그램을 실행하는 Python simpleHTTPserver. 이 앱은 위의 서버에서 Ajax 요청을 실행하고 있습니다.

문제가 무엇인지에 대한 생각은 없습니까?

편집하다:

그리고 ... 항구가 문제였습니다. 귀하의 답변에 감사드립니다 :)

누구나 Python 병 서버를 사용하는 경우이 게시물에 제공된 답변에 따라 CORS 문제를 해결할 수 있습니다. Bottle Py : jQuery AJAX 요청에 대해 CORS 활성화


10
그들은 다른 포트에 있기 때문에 동일하지 않습니다!
일부

포트 번호가 다릅니다. 이것은 Cross Origin 규칙을 위반할 수 있습니다.

4
IE는 포트 번호를 고려하지 않습니다.
Ray Nicholus

@some 대부분의 브라우저는 하나에 'www'가 있고 다른 하나에는없는 경우 동일하지 않다고 결론을 내립니다. 악마는 세부 사항에 있습니다.
드물게 '모니카가 어디 있느냐'궁핍 한 사람

@SeldomNeedy example.com, www.example.com, www1.example.com 및 mirror.www.example.com은 모두 다른 도메인입니다. example.com , example.com , example.com , example.com:80443 은 모두 출처가 다릅니다.
일부

답변:


124

프로토콜 , 호스트 포트 가 동일한 경우에만 동일한 것으로 간주됩니다 . 동일한 원본 정책

활성화하려면 헤더를 추가하여 Cross-Origin Resource Sharing (cors) 을 따라야합니다 . Mozilla에는 예제있습니다.

응답의 헤더로 Access-Control-Allow-Origin을 추가해야합니다. (당신은 아마해야 모두를 허용하려면 NOT 그렇게) :

Access-Control-Allow-Origin: *

여러 오리진을 지원해야하는 경우 (예 : example.comwww.example.com), 요청 Access-Control-Allow-OriginOrigin-header 값에 대한 응답에를 설정하십시오 (Origin이 화이트리스트에 있는지 확인한 후).

또한 일부 요청은 OPTION 메서드와 함께 프리 플라이트 요청을 전송하므로 자신의 코드를 작성하는 경우 해당 요청도 처리해야합니다. 예제는 Mozilla를 참조하십시오 .


8
이것은 AJAX가 관련된 모든 곳 에서 빨간색, 대문자 및 굵은 글씨로 강조되어야합니다 .
Zoltán Schmidt

5
이 답변에 대한 추가 사항, 참고로 'Access-Control-Allow-Origin: https://example.com'입니다 NOT 에 해당 'Access-Control-Allow-Origin: https://www.example.com'. 두 가지 모두를 통해 사이트에 액세스 할 수있는 경우 응답 헤더에 둘 다 있어야합니다.
드물게 빈곤 '모니카 어디 없다'

1
GET, POST및과 같은 간단한 요청에 대해서는 기본적으로 실행 전 요청이 전송되지 않습니다 HEAD. 자세한 내용은 답변링크 된 MDN 문서를 참조 하십시오.
Emile Bergeron

중복 헤더가 어차피 @SeldomNeedy
마이크 플린

@MikeFlynn 내 말투가 느슨하다는 것은 인정했지만, 나는 그것을 제안하려고하지 않았습니다. 요청에 따라 적절한 헤더를 보내도록 서버를 구성하기 만하면됩니다.
드물게 '모니카가 어디 있느냐'궁핍 한 사람

30

포트 번호가 다릅니다.

체계, 호스트 이름 또는 포트가 일치하지 않는 경우 요청은 교차 도메인으로 간주됩니다.


1
443 및 80 제외.
Joseph Lust

17
443 및 80 포함
code_monk

5
문제에 대한 확인이 어떻게 문제의 해결책이 될 수 있습니까? 대답을 게시하십시오.
Ritesh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.