1

를 요청, 모든 것을 작동 :여러 CORS/비행 전으로 POST는 웹 API를 2

<customHeaders> 
<add name="Access-Control-Allow-Origin" value="http://localhost:3000"/> 
<add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS"/> 
<add name="Access-Control-Allow-Headers" value="accept, cache-control, credentials, content-type, authorization, origin, X-Requested-With, X-dev-mode"/> 
</customHeaders> 

을하지만, 내가하려고 할 때 이 같은 여러 CORS를 사용하려면 : 그것은 GET 작동

// Filename: Global.asax.cs 
protected override void Application_Start() 
{ 
    ApiConfig.Register(GlobalConfiguration.Configuration); 
} 

// Filename: ApiConfig.cs 
public static void Register(HttpConfiguration config) 
{ 
    var cors = new EnableCorsAttribute("http://localhost:3000,http://someOtherUrl.com/", "*", "*"); 
    config.EnableCors(cors); 
} 

(예 등 콘텐츠를지고)하지만 POST/PUT을 사용하는 경우, 그것은 브라우저에서이 오류를 제공 (예 등 콘텐츠를 저장) (크롬) 콘솔

가져 오기 API에 http://localhost:56214/api/1/content/SAVE을로드 할 수 없습니다. 프리 플라이트 요청에 대한 응답이 액세스 제어 검사를 통과하지 못합니다. 'Access-Control-Allow-Origin'헤더가 요청 된 자원에 없습니다. 따라서 원점 'http://localhost:3000'은 액세스 할 수 없습니다. 불투명 한 응답이 사용자의 요구를 충족 시키면 요청 모드를 'no-cors'로 설정하여 CORS가 사용 불가능한 상태에서 자원을 페치하십시오.

OPTIONS에서 요청이 실패합니다. 사용자 지정 처리기가 있고 내 경로도 구성되어 있습니다. 한 가지 더 언급해야 할 것은 콘텐츠를 저장하기위한 PUT/POST 호출이 반응을 통한 ajax 호출이라는 것입니다. 문제가 될 수 있습니까?

답변

0

문제는 두 번째 URL에서 후행 슬래시입니다. 이 그것을 변경하고 그것을 작동 :

var cors = new EnableCorsAttribute("http://localhost:3000,http://someOtherUrl.com", "*", "*"); 
0

당신이

<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" /> 
같은 액세스 제어가-허용-방법에 빈 공간을 제거 시도가