2017-01-07 2 views
1

작동하지 CORS 수 있도록 나는 클라이언트 측에서 다음 요청했다 :낸시 + .NET 코어

Is it possible to enable CORS using NancyFX?

나는 또한 시도 : 나는 백엔드에서 다음을 시도

$.get(getUrl) 

을 이 네 가지 접근 방식 (별도로 주석 처리 됨) :

 // protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) 
    // { 
    //  pipelines.AfterRequest += ctx => 
    //  { 
    //   ctx.Response.Headers.Add("Access-Control-Allow-Origin", "*"); 
    //   ctx.Response.Headers.Add("Access-Control-Allow-Headers", "*"); 
    //   ctx.Response.Headers.Add("Access-Control-Allow-Methods", "*"); 
    //  }; 
    // } 

    protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) 
    { 
     pipelines.AfterRequest += (ctx) => 
     { 
      ctx.Response.Headers.Add("Access-Control-Allow-Origin", "*"); 
     }; 
    } 

    protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context) 
    { 
     base.RequestStartup(container, pipelines, context); 

     // pipelines.AfterRequest.AddItemToEndOfPipeline((ctx) => 
     // { 
     //  ctx.Response.WithHeader("Access-Control-Allow-Origin", "*") 
     //   .WithHeader("Access-Control-Allow-Methods", "*") 
     //   .WithHeader("Access-Control-Allow-Headers", "*");   
     // }); 

     // pipelines.AfterRequest += (ctx) => 
     // { 
     //  ctx.Response.Headers.Add("Access-Control-Allow-Origin", "*"); 
     //  ctx.Response.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
     // }; 

나는 이브를 가지고있다. 모두가 동일하게 산출

After += (Context) => 
{ 
    Context.Response.Headers.Add("Access-Control-Allow-Origin", "*"); 
    Context.Response.Headers.Add("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS"); 
    Context.Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type, x-requested-with, Authorization, Accept, Origin"); 
}; 

: 내가 기대하는 사용자 정의 헤더를 전달하고 있지 않다 때문에

XMLHttpRequest cannot load http://localhost:5000/registration/signup. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5001' is therefore not allowed access. The response had HTTP status code 401. 

401이고, n은 같은 내 모듈 뭔가를 시도했다. CORS 문제를 해결하기 위해 노력하고 있습니다.

+0

이 게시물 http://antupload.com/questions/26171749/getting-cors-to-work-with-nancy 해결책은 Nancy 모듈을 사용하는 것이 었습니다. 파이프 라인 끝에서로드하십시오. – Woot

+0

[CORS와 낸시 작업 방법] (http://stackoverflow.com/questions/26171749/getting-cors-to-work-with-nancy) – Woot

답변

0

Welp. 이것은 2 마리의 향하고있는 뱀이었다. 나는 기본적인 nodejs 리버스 프록시를 시도하는 것에 의지했다. 그리고 그것이 작동하지 않을 때 ... 그것은 모두 의미가 있었다.

부트 스트 래퍼 코드 이전에 실행되거나 실행되는 인증 미들웨어 코드가 있으므로 낸시와 함께했던 접근법 중 일부는 보이지 않습니다. 그래서 프리 플라이트 요청은 즉시 401 (미들웨어가 체크하고있는 커스텀 헤더를 보내지 않음)과 CORS가 절대로 공격을받지 못하게하는 코드를 즉시 얻습니다.

그러나 다른 문제는 localhost입니다. 브라우저는 로컬 호스트에 대해 CORS를 허용하지 않습니다. 그래서 여기의 해결책은 ngrok를 사용하는 것입니다 (이것을 테스트하지는 않았지만 작동해서는 안됩니다). 또는 비활성화 된 웹 보안 플래그가 false로 설정된 크롬을 실행합니다 (이 방법은 OS에 따라 다름). https://docs.microsoft.com/en-us/aspnet/core/security/cors

이제 내 Access-Control-Allow-Origin 헤더가 설정되는 :

은 나는 그것을 모두 제거하고 여기에 설명 된 표준 .NET 핵심 CORS 접근 갔다, 후자의 옵션을 시도하고, 내 낸시 CORS 코드없는 실행을 해결하기 위해 크롬은 다소 안전하지 못합니다. 그러나 그것은 효과적이다.

나는 생산을 위해 NGINX와 같은 역방향 프록시를 사용할 것이라고 생각합니다. 그리고 이것 모두는 먼 기억처럼 보일 것입니다 ...