2012-11-08 2 views
6

도메인 간 요청을하려고하는데 내 서버가 다음 헤더를 보내도록 구성되었습니다.옵션 405 (방법 허용되지 않음) 서버가 액세스 제어 허용 방법을 보냅니다. 옵션, 가져 오기, 머리글, POST

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:x-requested-with, Authorization 
Access-Control-Allow-Methods:OPTIONS, GET, HEAD, POST 
Access-Control-Allow-Origin:* 

그러나 OPTION 요청이있을 때 OPTIONS 405 (Method Not Allowed) 오류가 발생합니다.

모든 아이디어 문제는 무엇이며 어떻게 수정해야합니까?

+0

의 사용 가능한 복제 [? 액세스 제어 - 허용 - 원산지 여러 원산지 도메인 (http://stackoverflow.com/questions : ASP 고전을 사용하는 경우, 그것은 당신의 Web.config 파일에 다음 행을 추가 의미/1653308/access-control-allow-origin-multiple-origin-domains) – kenorb

답변

6

웹 서버/응용 프로그램이 모든 HTTP GET 동사 및 POST 동사 요청에 대해 언급 된 응답 헤더를 보내도록 구성되었을 수 있습니다. 하지만 웹 서버가 HTTP OPTIONS Verb를 처리하도록 구성되어 있습니까?

자세한 내용이 필요하면 사용중인 웹 서버 및 응용 프로그램 프로그래밍 기술을 제공하십시오.

약간의 배경으로 브라우저는 일부 맞춤 요청 헤더가있는 도메인 간 요청이있을 때 OPTIONS 요청을 보냅니다. 이 요청은 실제 요청 이전에 이루어집니다. 브라우저는 사용자가 언급 한 응답 헤더로이 요청이 돌아올 때만 실제 요청을합니다. 당신 WebAPI를 사용하는 경우

1) : -

//이 옵션 요청이라고 프리 플라이트 요청은 일반적으로 개발 도구가

+1

의견을 보내 주셔서 감사합니다. 서버는 IIS 7입니다. OPTIONS를 처리하도록 구성하려면 어떻게해야합니까? –

+0

좋은 방향으로 들립니다. 'HTTP Options' 동사를 다루는 방법에 대한 권장 링크를 제공해 주시겠습니까? – Blaise

+1

옵션 동사를 처리하기위한 @Blaise 최단 설명은 http://stackoverflow.com/a/13646169/570239에 설명되어 있습니다 - 웹 API <2와 asp.net mvc에 대한 자세한 내용은 generat에서 확인하십시오.이 http : // www를 확인하십시오. .codeguru.com/csharp/.net/net_asp/using-cross-origin-resource-sharing-cors-in-asp.net-web-api.html을 참조하십시오. 웹 api 2 확인 http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api – humblelistener

7

나는이 개 솔루션을 제안 그들의 네트워크 tab.f에서 그들을 추적 해달라고 브라우저를 운데하려고 WebAPI 사용

public class XXXController : ApiController 
{ 
    // OPTION http-verb handler 
    public string OptionsXXX() 
    { 
     return null; // HTTP 200 response with empty body 
    } 

    ... 
} 

2) 인 경우 하지 : 은 관례처럼 보일 것입니다 옵션 방법을 구현하기 위해 필요 코드의 어느 부분이 OPTION 호출에 대해 OPTIONS 405 (Method Not Allowed) 오류를 트리거하는지 확인하십시오. 이 경우 나는 Web.config 파일 작동이 <customHeaders/>에 추가하려고 있는지 확인합니다 :

<configuration> 
    <system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <!-- CORS temporary solution --> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Headers" value="Content-Type, Authorization, Accept, X-Requested-With" /> 
     <add name="Access-Control-Allow-Methods" value="OPTIONS, TRACE, GET, HEAD, POST, PUT" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 
</configuration> 
+0

죄송 합니다만이 문제를 해결할 수 없습니다. 문제를 일으키는 다른 것이어야합니다. – Blaise

1

당신은 기본 OPTIONSVerbHandler을 수정해야합니다.

<handlers> 
     <remove name="OPTIONSVerbHandler" /> 
     <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="IsapiModule" scriptProcessor="C:\Windows\System32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="None" /> 
    </handlers> 
관련 문제