2014-12-08 9 views
2

을 허용되지 않습니다, 나는이 오류를localhost를 따라서 CORS 문제를 해결하기 위해 액세스

The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed. Origin 'http://localhost' is therefore not allowed access. 

I를보고 있어요 내 서버 사이트

이 아니라 내 개발 중에있다

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: GET, POST'); 
header("Access-Control-Allow-Headers: X-Requested-With"); 

을 썼다 생각 허용 - 원산지 : * 모든 것을 해결할 것인가? 하지만 헤더에 여러 값이 들어 있다고하는 이유는 무엇입니까?

+0

이것을 참조 할 수 있습니까? http://stackoverflow.com/questions/22343384/the-access-control-allow-origin-header-contains-multiple-values ​​ –

답변

1

이것은 실수로 CORS를 두 번 사용하면 발생하는 일반적인 문제입니다. 아파치에서 활성화하지 않았는지 또는 헤더가 두 번 설정되어 있지 않은지 확인하십시오. 위생 검사로 응답을 보내기 전에 헤더를 제거하고 다시 추가 할 수 있습니다.

예 :

header_remove('Access-Control-Allow-Origin'); 
header('Access-Control-Allow-Origin: *'); 
+0

이봐! 고마워! – mike19911

+1

@ mike19911 K 그러면 내 의심이 옳다. 그 코드를 붙여 넣기 만하면됩니다 :). 그것은 문제를 해결하지 못한다. –

1

로 인해 브라우저 보안 제한, 대부분의 Ajax 요청은 동일한 원본 정책이 적용됩니다; 요청이 다른 도메인, 하위 도메인, 포트 또는 프로토콜에서 데이터를 성공적으로 검색 할 수 없습니다. 그러나 스크립트 및 JSONP 요청에는 동일한 출처 정책 제한이 적용되지 않습니다.

JSONP를 아직 사용하지 않은 경우 위키 백과는 의미 주 서버가 아닌 다른 서버에서 JSON을 사용

JSONP 또는 "패딩 JSON은"기본 JSON 데이터 형식으로 보완 요청 및 더 많은에 페이지를 허용하는 사용 패턴입니다 말한다 .

그래서 Ajax 호출은 다음과 같이해야합니다 :

$.ajax({ 
     type: 'GET', 
     crossOrigin: true, 
     dataType: "jsonp", 
     url: url, 
     success: function(data) { 
      console.log(data); 
     } 
    }); 
1

을 *이 작동하지 않습니다 사용. 아래 PHP 코드는 모든 도메인의 모든 요청을 수락하며 IE, Firefox, Chrome 및 Safari에서 작동합니다.

$origin=isset($_SERVER['HTTP_ORIGIN'])?$_SERVER['HTTP_ORIGIN']:$_SERVER['HTTP_HOST']; 
header('Access-Control-Allow-Origin: '.$origin);   
header('Access-Control-Allow-Methods: POST, OPTIONS, GET, PUT'); 
header('Access-Control-Allow-Credentials: true'); 
header('Access-Control-Allow-Headers: Authorization, X-Requested-With'); 
header('P3P: CP="NON DSP LAW CUR ADM DEV TAI PSA PSD HIS OUR DEL IND UNI PUR COM NAV INT DEM CNT STA POL HEA PRE LOC IVD SAM IVA OTC"'); 
header('Access-Control-Max-Age: 1'); 

모든 도메인의 요청을 수락하는 것은 안전하지 않습니다. 더 나은 (그러나 약간 더 복잡한) 솔루션을 보려면 여기를 참조하십시오 : CORS That Works In IE, Firefox, Chrome And Safari

관련 문제