2012-02-27 3 views
4

클래식 "Origin ... Access-Control-Allow-Origin에서 허용되지 않는"문제입니다. 두 대의 기계가 동일한 웹 사이트의 내용을 제공합니다. 컴퓨터 A가 jquery를 통해 $('#main').load('link_to_resource_on_B')을 수행하면 컴퓨터 B는 Access-Control-Allow-Origin: * 헤더를 추가하여 mod_python으로 콘텐츠를 제공합니다. 그러나 어떤 이유로 든 여전히 작동하지 않습니다. Chrome, Safari 및 Internet Explorer에서이 기능을 테스트했습니다. 그리고 응답 헤더를 확인하기 위해 명령 행을 통해 테스트 한 결과, Access-Control-Allow-Origin: *이 B의 헤더에 성공적으로 나타났습니다. 아래를 참조하십시오. 내가 뭘 놓칠 수 있니?액세스 제어 허용 - 원본 : * 작동하지 않습니까?

$ telnet localhost 80 
Trying ::1... 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
GET /tests/python/test/env HTTP/1.1 
host: 10.0.1.10 

HTTP/1.1 200 OK 
Date: Mon, 27 Feb 2012 02:05:33 GMT 
Server: Apache/2.2.20 (Ubuntu) 
Access-Control-Allow-Origin: * 
Vary: Accept-Encoding 
Transfer-Encoding: chunked 
Content-Type: text/html 
+0

클라이언트가 설정 한 사용자 지정 헤더가 있습니까? 사용자 지정 헤더 (또는 비 GET HTTP 메서드)는 추가 처리가 필요한 프리 플라이트 요청을 트리거 할 수 있습니다. – monsur

+0

팁, @ ​​monsur 주셔서 감사합니다. 당신 말이 맞아, 그것은 OPTION 헤더 였고, 보이는대로 처리되지 않았습니다. 약간의 연구에서 제 jquery가 너무 오래되었다고 말했습니다. 최신 jquery (1.5.2부터)는 의도적으로 고객 헤더 사용을 피합니다. 그래서 아래로 비등, 내 jquery를 업그레이 드하고, 내 두통이 사라졌다. 동일한 증상으로 고통받는 사람들에게이 링크는 나에게 계몽의 후반부를 제공합니다. [http://remysharp.com/2011/04/21/getting-cors-working/](http://remysharp.com/2011/04/21/getting-cors-working/) – user1170717

+0

@ josh3736, thanks for 초기 게시물의 형식을 지정하는 데 도움이됩니다. 그것은 나의 첫 번째 게시물이었다. 다음에해야 할 일을 알게 될 것입니다. – user1170717

답변

4

사용 액세스 제어 - 허용 - 원산지가 응답 헤더는 충분하지 않습니다. 서버 측 구현은 pre-flight OPTIONS request에 대한 적절한 처리를 제공해야합니다. 같은 액세스가 제어 - 허용 - 헤더가도에 사용되는 경우가 아닌 표준 HTTP 헤더에 OPTIONS 응답이 필요할 수 있습니다

Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, POST 

다른 HTTP 헤더 : 특히, 다음 HTTP 헤더는 OPTIONS 응답 설정해야합니다 귀하의 환경.

액세스 제어 허용 원점 : * HTTP 헤더도 다음 GET & POST 응답에 설정해야합니다.

관련 문제