2013-09-27 4 views
1

상황 : angular/.netwebapi를 사용하여 전자 상거래 사이트를 구축 중입니다. 핵심은 - webappi 서비스 집합을 공유하는 여러 고객 (mongoDB 카탈로그와 대화하고, mysql 주문 데이터베이스를 관리하는)에 배포해야합니다. 정적 및 기능적 규칙 집합이 변경되어 각 고객에 대해 seprate 폴더가 있어야합니다.aws 및 CORS 문제의 웹 배포

질문 1 : 내 URL이 http://mydomain.com/cust1, http://mydomain.com/cust2 등을 할 수 있도록 나는 그것이 JS 정적 파일에 대한 모든 경로를 나누기 노력으로가 어떻게 가상 폴더에 각 응용 프로그램을 배포하는

질문 2 : 여러 포트에서 사이트를 만들고 각 포트를 다른 포트에 호스팅하여 # 1을 해결합니다. 그게 효과가있다. 그러나 나는 .Net Web Api 앱이 중심적인 앱이되기를 정말로 원하지 않는다. 따라서 포트 <> 80 (예 : http://mydomain.com:8081/index.html#/mypage)에서 제공되는 페이지에서 http://mydomain.com/api/service으로 실행되는 서비스에 액세스하려고하면 CORS 문제가 발생합니다.

질문 3 : 질문 3 : 하위 도메인 접근 방법을 사용하면 # 1과 2가 해결 될 수 있다고 생각합니다. 따라서 각 저장소는 서로 다른 하위 도메인 (예 : cust1.mydomain.com, cust2.mydomain.com 및 각기 다른 폴더를 가리킴)에 호스팅되며 webapi는 하나의 가상 디렉토리 (예 : mydomain.com/api)에서 호스팅됩니다. 나는 곧 IIS에서 그것을 시도 할 것이다.

질문 4 : 그러나 실제로 내 의도는 리눅스 상자에 각도 응용 프로그램을 배포하고 Windows 서비스를 호스트하는 것이 었습니다. 우리는 모든 것을 놓기로 결정했기 때문에 CORS에 다시 들러 가지 않도록 한 도메인 내에 리눅스와 윈도우 박스를 모두 가질 수 있을지 확신하지 못합니다. 그 포인터는 정말 감사하겠습니다. 이 문제를 감소 사전

답변

0

모든

마지막으로 보인다. 내 설정이었다 -

    의 nginx 서버에서 호스팅
  1. 각도 응용 프로그램은 (mydomain.com)는
  2. 웹 서비스 창에서 호스팅되는 2012 서버 (app.mydomain.com)

**가 같은 지역에서 모두 aws에 있습니다. 다음 줄 (http://better-inter.net/enabling-cors-in-angular-js/ 덕분에) 추가하여

  1. 변화의 app.config를 각 app.js에 :

    나는 고르 작동하도록 여러 일을했다.

    의 app.config ([ '$ httpProvider'기능 ($ httpProvider) {$ httpProvider.defaults.useXDomain = TRUE; 은 $ httpProvider.defaults.headers.common 삭제 [ 'X--함께 요청']; }

  2. POST의 경우 각도 촬영 옵션 인 OPTION은 먼저 웹 서버의 수용 (W3C 당)을 확인해야하므로 웹 서버가 적절하게 재생되어야하므로 이전에는 효과적 이었지만 매우 효과적이었습니다. 내 기존 .Net MVC 프로젝트의 CORSHandler 클래스. 여기에서 자세한 내용을 읽으십시오. - http://dlr2008.wordpress.com/2013/06/17/rest-web-api-and-cors/ 다양한 게시물에서이 점에 대해 많은 언급이 있습니다. - 그러나이 중 하나만 (내 지식으로는 어떻게 작동하는지 설명합니다)

  3. 1과 2로는 일을해야하지만 그렇게하지 않아야합니다. 그래서 "문서화되지 않은"것들을위한 시간이었습니다. 우리가 # 2에서 정의한 corshandler에 OPTION 요청을 전달할 수 있도록 webdav를 비활성화해야하는 것처럼 보입니다. 이 게시물 당 Web.config의에서 변경 ->http://brockallen.com/2012/10/18/cors-iis-and-webdav/

마지막으로 모든 내가했기 때문에

나는 확신 많은 사람들이, 특히 3 번에 자신의 머리카락을 뽑아하고 ... 함께 일했다. 이 모든 가난한 영혼의 몇 시간을 절약 할 수 있기를 바랍니다 ... hth

0

에서

덕분에 아래로는 CORS 당신의 해결책이 될 것입니다 수 있도록처럼 들린다. 당신은 IIS/ASP.NET을 사용하는 경우

당신도이 작업을 수행 할 수 있습니다 추가하여

  • IIS "액세스 제어 - - 원산지 허용"사이트 또는 가상 디렉터리에 대한 헤더를
  • Response.AppendHeader ("Access-Control-Allow-Origin", "*")가 포함 된 ASP.NET; 상황이 해결 같은
+0

webAPI를 위해 나는 이미 그것을하고 있습니다 (2 번째). 그러나 이상적으로 내 HTML 파일 (angulrjs 실행)은 linux/nginx 클러스터에 호스팅되며 webapi 서비스는 클라이언트에서 직접 웹 서버를 거치지 않고 액세스 할 수 있습니다. 그러면 브라우저가 CORS를 방지합니다. 두 도메인으로 공용 DNS를 만들고 테스트를 수행했습니다. 성공하면 포럼이 업데이트됩니다. 동시에 다른 사람이 다른 지침을 가지고 있다면 알려주십시오. – rahul

+0

S3 또는 Cloudfront에서 해당 파일을 호스팅하는 것이 좋습니다. CORS 헤더도 지정할 수 있습니다. 나는 nginx에서 그것을하는 방법에 익숙하지 않다. 그러나 이것은 도움이 될지도 모른다. http://enable-cors.org/server_nginx.html –

+0

나는 corshandler를 사용하여 그렇게했다. - 그러나 열쇠는 webdav였다 - 나는 그 이유를 알지 못했다. 나는 무능하게해야했다. – rahul