2016-10-30 2 views
4

Angular 2 서비스를 통해 POST 요청을 ASP.NET Core API로 보낼 때 문제가 발생합니다. .. 나는 현재 HTTP 500 오류가 점점 오전 :.ASP.NET 코어 CORS가있는 Angular2는 POST 요청을 보낼 때 문제가 발생합니다.

"XMLHttpRequest의이 http://localhost:51014/api/sites를로드 할 수 없음 '액세스 제어 - 허용 - 원산지'헤더 따라서 액세스가 허용되지 않는 요청 된 리소스 기원 'http://localhost:3000'의 존재를 응답이 있었다 HTTP 상태 코드 500입니다. "

GET 요청에서이 오류가 표시되지 않고 CORS 설정이 올바르게 서버 측에 있는지 확인할 수 있습니까?

Startup.cs

public void ConfigureServices(IServiceCollection services) 
    { 
     ... 

     services.AddCors(); 
     services.AddMvc();    

     .... 
    } 

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     ... 

     app.UseCors(builder => 
      builder.WithOrigins("http://localhost:3000") 
       .AllowAnyHeader() 
       .AllowAnyMethod()); 

     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 

    } 

SitesContoller.cs

// POST: api/Sites 
    [HttpPost] 
    public async Task<IActionResult> PostSite([FromBody] Site site) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     _context.Sites.Add(site); 
     try 
     { 
      await _context.SaveChangesAsync(); 
     } 
     catch (DbUpdateException) 
     { 
      if (SiteExists(site.Id)) 
      { 
       return new StatusCodeResult(StatusCodes.Status409Conflict); 
      } 
      else 
      { 
       throw; 
      } 
     } 

     return CreatedAtAction("GetSite", new { id = site.Id }, site); 
    } 

내 코너 2 서비스 :

site.service.ts이 01,235 니펫

public createSite(site: Site): Observable<Site> { 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 
    let body = JSON.stringify(site); 

    return this.http 
     .post(this.apiUrl + 'sites', { body }, options) 
     .map((res: Response) => res.json()); 
} 
+1

답변을 찾으셨습니까? ASP.NET Core의 버그처럼 보입니다 ...? – ajbeaven

답변

0

SiteController 클래스에 EnableCors 특성을 추가해야합니다. 이

[EnableCors(origins: "http://<SOME_SITE>", headers: "*", methods: "*")] 
public class SiteController { 
..... 
} 

이이 경우에 당신의 코드에서 말할 수 없다이 link

를 참조처럼, 비트 당신은 그것을 필요합니까.

관련 문제