2017-05-11 2 views
1

동일한 솔루션에 ASP.Net Core 및 Web API 프로젝트가 있습니다. Api 프로젝트에서 정의한 내 핵심 프로젝트에서 Get, Post, Put, Delete를 호출합니다. 확실히 CORS를 활성화해야합니다.요청 헤더 필드 x-ms-request-root-id는 프리 플라이트 응답에서 Access-Control-Allow-Headers로 허용되지 않습니다.

우는 소리는

$.ajax({ 
     "url": "myApiUrl", 
     "type": "Get", 
     "data": { 
      //Here I'm passing a value 
     }, 
     success: function (d) { 
     } 

내가 시작 프로젝트로 모두 프로젝트를 설정하십시오 내 웹 API를 web.config 파일에 추가 코드,

<httpProtocol> 
    <customHeaders> 
    <!-- Enable Cross Domain AJAX calls --> 
    <clear /> 
      <add name="Access-Control-Allow-Origin" value="*" /> 
      <add name="Access-Control-Allow-Headers" value="Content-Type"/> 
    </customHeaders> 
</httpProtocol> 

그리고 핵심 프로젝트에서 내 Ajax 코드입니다 . 별일 아니다. Api 메서드를 호출하고 데이터를 반환합니다. 하지만 어떤 경우에는 아무 것도 반환하지 않습니다. 심지어 메소드가 데이터를 반환하더라도, 나는 내 질문에 언급 된 browser console에 오류가 발생합니다. 나는 this one을 포함하여 많은 답변을 확인했는데, 모두 response headeraccess control을 추가해야한다고 나와 있습니다. 어느 누구나 내가 정확히 어디에 추가해야하는지, 그리고 예상대로 작동 할 수 있도록 추가해야 할 부분을 알려줍니다.

코어도 마찬가지로 Asp.net MVC 프로젝트에서 확인했습니다.

참고 : 내 웹 프로젝트가 아닌 웹 API 프로젝트에 CORS를 추가했습니다. 모든 요청에 ​​대해

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddCors(o => o.AddPolicy("CrossPolicy", builder => 
    { 
     builder.AllowAnyOrigin() 
       .AllowAnyMethod() 
       .AllowAnyHeader(); 
    })); 

    // ... 
} 

을 :

+0

웹 API 작업에서 권한 부여가 허용 되었습니까? –

+0

아니요. 지금은 인증없이 모든 API 방법을 제공하고 있습니다. –

+0

확인. CORS를 어떻게 사용했는지 보여 주실 수 있습니까? –

답변

0

이 시도

public void Configure(IApplicationBuilder app) 
{ 
    app.UseCors("CrossPolicy"); 

    // ... 
} 

또는

[EnableCors("CrossPolicy")] 

당신은 thisthis 링크에서 자세한 정보를 찾을 수 있습니다.

잘하면 도움이됩니다.

+0

내 응용 프로그램에는 ApplicationOAuthProvider 클래스 나 MatchEndpoint가 없습니다. 그것들이나 무엇을 추가해야합니까? 추가해야하는 부분을 추가해야하는 경우? –

+0

답변을 업데이트합니다. 그리고 나의 이전의 대답에 대해 유감스럽게 생각한다. ASP.NET 웹 API 2 @ BasantaMatia – Ashiquzzaman

1

웹 API에서 CORS를 올바르게 설정하지 않은 것 같습니다.

1) [EnableCors] 속성을 웹 API의 컨트롤러 또는 WebAPI Config에 넣을 수 있습니다.

예 - [EnableCors("*", "*", "*")]. 컨트롤러 (CORS를 허용하려는 컨트롤러)에 넣으십시오. 참고 :이 전 세계적으로 CORS를 사용하도록 설정해야하는 경우, 삭제 EnableCors 속성 : 당신은 특정 방법 등 URL이

2) WebAPi.config의 통화 enableCors 즉

public static void Register(HttpConfiguration config) 
    { 
    // Other configuration omitted 
    config.EnableCors(); 
    } 

편집이

수 있도록이 필터에 속성을 수정할 수 있습니다 WebApiConfig.cs 파일의 EnableCors() 줄을 다음과 같이 수정하십시오.

config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 
+0

전 세계적으로 원하기 때문에 web.config 파일에 추가했습니다. 문제 없습니다. 하지만 어디에서 Register 메소드를 작성해야합니까? –

+0

등록 방법을 쓸 필요가 없습니다. 이미 Web API 프로젝트의 WebApiConfig.cs 파일에 있습니다. 기본적으로 생성됩니다. 그 안에 선을 추가하면됩니다. –

+0

현재 ASP.Net Core에서 작업하고 있습니다. WebApiConfig.cs라는 파일이 없습니다. 구성 방법 아래 startup.cs 파일에 추가했습니다. EnableCors에 대한 정의가 포함되어 있지 않습니다. –