2013-08-28 12 views
3

나는이 두 개의 프로젝트웹 API에 액세스 할 수 없습니다

  1. MVC 웹 응용 프로그램
  2. MVC 웹 API 내 IIS에 모두 게시 한 7.5

내 웹 응용 프로그램은 7172 포트 에서 호스팅되며 웹 API는 7171 포트에서 호스팅됩니다.

이상한 iam이 내 웹 응용 프로그램 (7172)에서 jquery.ajax()를 호출 할 수 없습니다. 웹 API (7171) 포트. 그것은 405 오류 코드를 찾을 수 없습니다.

내 웹 API 프로젝트 (7171)에서 동일한 jquery.ajax()를 작성하고 웹 API 메소드를 호출하면 올바르게 작동하고 데이터를 반환합니다.

내 웹 앱에서 web api를 호출하고 싶습니다.

의견을 보내 주시면 감사하겠습니다.

미리 감사드립니다.

+0

MVC 애플리케이션 내에서 API를 사용하려는 계획이라면 동일한 웹 앱에서 호스팅하는 것이 좋습니다. 그렇지 않으면 교차 사이트 스크립팅 제한이 발생합니다. http://stackoverflow.com/questions/14400710/cross-site-scripting -requirement-makes-my-api-useless –

답변

3

이것은 Same Origin Policy과 관련이 있습니다. 기본적으로 다른 도메인 (이름, 포트 및 프로토콜 모두)에 대한 AJAX 호출을 실행할 수 없습니다.

이 기능을 사용하려면 Cross-origin resource sharing (CORS)을 사용해야합니다. CORS는 (prerelase) NuGet 패키지를 설치하여 웹 API와 함께 사용할 수 있습니다. Microsoft ASP.NET Web API Cross-Origin Support

이 패키지를 사용하면 서비스를 호출 할 수있는 도메인을 구성 할 수 있습니다. 산책로는 Enabling Cross-Origin Requests in ASP.NET Web API입니다. 본질적으로 컨트롤러에 다음과 같은 속성을 추가하는 것으로 바뀝니다.

[EnableCors(origins: "http://myclient.azurewebsites.net", headers: "*", methods: "*")] 
0

동일한 출처/도메인 간 보안 정책을 실행하고 있습니다. 사용 된 포트는 원점 계산의 일부입니다. 포트 번호가 일치하지 않기 때문에 (예 : localhost:80에서로드 된) Javascript가 AYAX 요청을 localhost:8080으로 만들 수 없습니다. 405 오류는 API가 아닌 웹 앱에서 발생합니다. 앱의 서버 로그를 확인하면 거기에 아약스가 표시됩니다.

+0

하지만 기능을 완성하기 위해 내 WebApi를 호출 할 모바일 앱 (클라이언트)이 있습니다. 이 경우 크로스 사이트 스크립팅과 동일한 문제가 발생하지 않습니다. – shakti

관련 문제