2009-08-03 7 views
0

asp.net mvc 응용 프로그램에있는 apis 세트를 개발했지만 메인 사이트 (LAMP 스택에있는 서버)에 액세스하는 브라우저에서 사용됩니다. Jquery permission denied - 다른 도메인 이름

도메인 이름

는 다음과 같다 :

http://www.mainsite.org

API의

http://apis.www.mainsite.org (원래 apis.mainsite.org,하지만 난 문제를 해결하기위한 시도로 수정했다)

api에 $ .ajax() 요청을 만들어 입력 HTML 양식을 div에 덤프하는 일반 HTML을 보냅니다.

내 apis 사이트에있는 샘플 호스트 페이지에서 실행하면 구성이 제대로 실행되지만 apis.www.mainsite.org 외부 사이트에 동일한 페이지를 넣을 때 구성이 "허가가 거부되었습니다" 서비스에 대한 첫 번째 요청에서 IE의 오류.

제대로 작동하려면 JSONP를 구현해야한다고 말하는 몇 가지 리소스가있는 것 같습니다. 그러나 크로스 도메인 스크립트를 그렇게 호출합니다.하지만 여전히 HTML을 반환하면서 해당 기능을 사용하도록 설정할 수 있습니다. JSON 대신.

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

다른 질문 - http://mysite.org에서 http://api.mysite.org까지의 XMLhttp 요청이 상호 도메인으로 간주되는 이유는 무엇입니까? 도메인 이름을 변경하면 도메인 간 통화가 가능합니까?

api 도메인을 메인 콘텐츠 도메인과 분리하는 것은 꽤 일반적인 시나리오처럼 보입니다. 나는 단순한 무언가를 놓치기를 바랍니다.

시간 내 주셔서 감사합니다.

이것은 자바 스크립트는 도메인 외부 페이지에 액세스 할 수 없음을 의미 '동일 기원 정책'이라고

답변

2

다음 포스트 스크립트 태그 해킹 기술에 더 많은 빛을 흘릴 수 있습니다 짧은에서

Why don't I get a 'same origin policy' warning when using the Google Maps API?

, 당신은 크로스 도메인 XMLHttpRequest의를 사용하여 호출 할 수 없습니다 (어떤 무엇 JQuery와 및 EXT-JS 사용) . <script> 태그는 이러한 규칙으로부터 영향을받지 않습니다. 요령은 JavaScript 코드에서 콜백에 대한 호출을 공식화하기 위해 이러한 매개 변수를 사용하여 페이지에서 JSON을 반환하는 매개 변수가있는 URL을 삽입하는 것입니다.

EDIT : 다른 질문에 대답하려면 URL의 도메인 부분이 정확히 일치해야합니다. 웹 사이트와 API가 동일한 스택을 사용했다

http://en.wikipedia.org/wiki/Same_origin_policy

+0

"스크립트 해킹 기술"은 JSONP입니다. – tvanfosson

2

.

예, 변경하면 모든 도메인 간 통화가 실행됩니다. /api이라는 디렉토리에 대한 심볼릭 링크를 만들어서 api.example.com 파일을 저장하는 곳으로 디렉토리를 전달할 것을 제안합니다. 그것은 똑같이 보일 것입니다. 따라서 api.example.comexample.com/api은 같은 폴더에 링크됩니다. 그건 아마도 당신의 상황을 해결할 것입니다.

또한 내가 방문하는 대부분의 사이트는 하위 도메인 대신 API를 사용하지만 실제로는 회사와 실제로 일하지 않은 것으로 나타났습니다.

+0

경우, 나는이 일을 볼 수 있지만 API는 ASP입니다 : 같은 도메인 호출 대 크로스 도메인의 예는 다음과 위키 백과 문서를 참조하십시오. NET MVC와 웹 사이트는 램프 스택과 함께 제공됩니다. 어쩌면이 방법을 사용할 수는 있지만 대신 LAMP 스택에 API를 구현하는 것이 좋습니다. – tvanfosson

+0

또 다른 아이디어는 Javascript 호출을 취하는 PHP 스크립트 인 프록시를 배치 한 다음 API로 나가 데이터를 가져 와서 Javascript 클라이언트로 다시 보냅니다. 캐싱을 구현할 수도 있습니다. –

+0

우리의 비즈니스 규칙은 결국 API 아래에서 살아남을 것이며 우리는 LAMP에서 API를 다시 작성할 수 없도록 (Windows 스택 아래에서) ASP.NET MVC에서이를 유지해야 할 것입니다. 그러나 필자는 디자이너에게 제공 할 수있는 서비스를 사용하기 위해 PHP 프록시를 생성하는 방법을 살펴볼 것입니다. BTW - 누군가는 Google 및 다른 대형 API 공급자가 어떻게 사라지는 지 알고 있습니까? JSONP 상호 작용 만 허용합니까? – Hal

관련 문제