2017-12-04 14 views
0

내 서버 측에서 REST API와 통신하는 2 개의 웹 사이트가 있습니다. 기본 웹 사이트에는 기본 도메인이 있고 두 번째 웹 사이트에는 하위 도메인이 있습니다. 예를 들어 www.example.comwww.admin.example.com서버 측 IIS와 클라이언트 측 앵글 4에서 PHP를 사용할 때 CORS 오류가 발생했습니다.

나는 REST 상기 www.example.com 루트 디렉토리에 API와이 때 www.example.com API에 대한 주소는 모두 괜찮습니다. 그러나 www.admin.example.com이 API를 처리하려고하면 오류가 발생합니다 :

응답 전 검사 요청이 액세스 제어 검사를 통과하지 못합니다. 아니요 ' Access-Control-Allow-Origin '헤더가 요청 된 리소스에 있습니다. 따라서 원점 'http://admin.example.com'은 액세스 할 수 없습니다. 나는 또한 내 의 Web.config에 다음 코드를 추가하려고

header("Access-Control-Allow-Origin: *"); 

:

내가 내 RestController.php 파일에이 PHP 코드 라인이

<system.webServer> 
    <httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Headers" value="*" /> 
     <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" /> 
     <add name="Access-Control-Max-Age" value="1000" /> 
    </customHeaders> 
    </httpProtocol> 
</system.webServer> 

을하지만, 여전히 나는 No 'Access-Control-Allow-Origin' 헤더 오류 또는 " 'Access-Control-Allow-Origin'헤더에 다중 값 '*, *, 그러나 오직 하나만 허용됩니다. "

중요한지는 모르겠지만 고객 측에 대해서는 각도 4을 사용하고 있습니다.

누구나 문제인지, IIS 문제인지, PHP 문제인지 또는 클라이언트 측 문제인지 파악할 수 있습니까?

당신은

+1

https://blogs.iis.net/iisteam/introducing-iis-cors-1-0 Microsoft는 CORS 응답을 구성 할 수있는 새로운 OOB 모듈을 소개했습니다. –

+0

감사합니다 !!! 그것을 해결 한 – guy

답변

0

먼저 방금 한 곳에서 액세스 제어 - 허용 - 원산지를 설정해야합니다 감사합니다. 나는 당신의 PHP 컨트롤러에서 그렇게하는 것이 좋습니다 것입니다. 그렇지 않으면 "Access Control-Allow-Origin"헤더에 여러 값 '*, *이 있지만 그 중 하나만 허용됩니다. "

둘째로 GET 요청을하는 경우에는 문제가 없지만 POST 요청을하는 경우 "응답으로 프리 플라이트 요청이 액세스 제어 검사를 통과하지 못합니다."라는 메시지가 나타날 수 있습니다. 그 이유는 브라우저가 OPTIONS 프리 플라이트 요청을 보내는 것입니다. 이 요청은 서버 쪽에서 (게시자가하는 것처럼) 처리하고 허용하고 처리해야합니다.

당신은 프리 플라이트 요청에 대한 더 많은 읽을 수 있습니다 여기에 : CORS with php headers