2014-10-06 2 views
0

저는 사내 회사 웹 응용 프로그램 용으로 AngularJS와 함께 ASP.NET WebAPI를 사용하여 테스트를 수행했습니다. 나는 그것의 흐름을 정말로 좋아한다.CORS가없는 SPA 용 ASP.NET WebApi

public HttpResponseMessage Get() 
{ 
    var response = new HttpResponseMessage(); 
    response.Content = new StringContent(/* index.html */); 
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); 
    return response; 
} 

내가 처음으로 index.html 페이지를 반환, 내 응용 프로그램에 있습니다 : 나는과 유사 하나 Index 방법으로 기본 HomeController 있습니다. 내 문제는,이 작업을 얻으려면, 나는 Startup.cs에서 OWIN 미들웨어에서 CORS를 활성화해야한다는 것입니다. WebAPI가 CORS를 사용하지 않고도 내 색인 페이지를 반환하고 교차 원점을 사용하지 않고 모든 각도의 http 요청을 사용할 수있게하는 방법이 정말 좋을 것 같습니다. 그게 가능할까요, 아니면 WebAPI의 전체 개념에 위배되는가요?

어떤 안내해 주셔서 감사합니다.

+2

브라우저에서 GET 요청을하려면 CORS가 필요하지 않습니다 ... 실제로 GET을 통해 페이지를 렌더링하고 일부 AJAX로 페이지를 쿼리하지 않고 'innerHTML'을 작성하지 않았습니까? –

답변

4

크로스 도메인 전화를 걸지 않는 한 cors를 활성화 할 필요가 없습니다. 그러나 동일한 도메인과 동일한 포트에 있어야한다는 것을 명심하십시오.

동일한 도메인을 유지하려면 웹 응용 프로그램 내에서 webapi를 호스팅하십시오.

+0

TGH가 말한 것을 추가하면 mywebsite.com/api와 같은 API를 호스팅하여 자바 스크립트에 액세스 할 수 있습니다. 또는 JSONP로 모든 것을 바꿀 수 있습니다. CORS를 사용하는 경우 해당 경로로 이동하십시오. – Prescott

0

웹 사이트를 호스팅하는 웹 서버에 일종의 역방향 프록시를 통합 할 수 있습니까? 즉, 모든 페이지와 API 요청에 동일한 URL 접두사가 있습니까? 그런 다음 클라이언트는 호스팅 웹 앱이 API를 호스팅하고있는 것처럼 API를 호출합니다. 호스팅 웹 앱에는 역방향 프록시가 구성되어 있으며 모든 API 요청은 클라이언트 수준이 아닌 서버 수준의 실제 API로 리디렉션됩니다. 희망은 그 말이 맞습니다.