매시업은 동일 조직 정책과 어떻게 작동합니까?


11

Javascript가 동일한 도메인의 스크립트에만 액세스 할 수있는 경우 웹 사이트에서 다른 도메인의 콘텐츠를 읽고 수정해야하는 매시업을 어떻게 만들 수 있습니까?

답변:


7

크로스 브라우저 솔루션

JSONP

액세스하려는 API가 JSONP를 지원 하는 경우 요청에 자바 스크립트 함수 이름 만 제공하면 JSONP는 myfunc({the:data});일반 자바 스크립트처럼 실행할 수있는 자바 스크립트를 반환 하므로 새 <script src="www.website.com/somecall?jsonp=myfunc">태그를 생성 해야합니다. "요청 보내기"( 요청 type: jsonp에서 사용하는 경우 jQuery에서 자동으로 수행 $.ajax)

단점은 JSONP를 지원하기 위해 API 제공자가 필요하다는 것입니다.

플래시

대상 웹 사이트에 crossdomain.xml루트라는 파일 이있는 한 Flash는 도메인 간 내용에 액세스 할 수 있습니다 ( 일반적으로 API를 제공하는 서버의 경우).

단점은 사용자 브라우저에 Flash가 필요하고 데이터를 얻는 웹 사이트에 도메인 간 요청을 허용하는 crossdomain.xml이 있어야한다는 것입니다.

동일한 도메인 이름의 서버 측 스크립트

PHP와 같은 서버 측 언어에는 BS 동일 도메인 제한이 없으므로 프록시 역할을하는 스크립트를 가질 수 있습니다 (예 : cURL과 같은 http 확장자 중 하나를 통해 다운로드).

또한 웹 페이지 / 자바 스크립트로 전달하기 전에 서버에서 데이터를 정리하거나 여러 소스를 매시업 할 수있어 유용한 데이터 부분 만 추출 할 수 있다는 이점이 있습니다. 대역폭이 문제가 될 수있는 곳.

단점은 모든 요청이 서버를 통과해야하므로 서버의로드가 증가한다는 것입니다.

그러나 목표는 교차 도메인 또는 jsonp를 지원하기 위해 대상이 필요하지 않기 때문에 모든 자원에서 작동한다는 것입니다. 따라서 아무것도 작동하지 않으면 이것이 가능합니다.


일부 브라우저 전용 솔루션

인터넷 익스플로러

Internet Explorer에 도메인 간 요청이 있음

Firefox

Firefox 3.5 이상에는 출처 간 공유 표준 이 있지만 PHP와 같은 특수 헤더를 포함하려면 액세스하려는 리소스가 필요합니다.

header("content-type: Access-Control-Allow-Origin: *");
header("content-type: Access-Control-Allow-Methods: GET");

다른 주요 브라우저도이 기능을 지원 하므로 이전 브라우저를 지원할 필요가없고 해당 헤더를 전송하기 위해 액세스하려는 리소스를 얻을 수있는 경우 이것이 가장 좋은 방법 일 수 있습니다. 그렇지 않으면 서버 측 대본은 나의 추천 일 것이다.


Firefox에는 사용자 설정 capability.policy.default.XMLHttpRequest.open도 있지만 브라우저에서 설정을 변경하는 사용자는 의지하지 않습니다.


0

이를 위해 다른 도메인의 API를 사용할 수 있습니다. Javascript는 웹 서버 (도메인)에있는 PHP 파일 (또는 다른 스크립트 파일)을 호출하고 CURL을 사용하여 다른 도메인의 API를 호출하여 응답을받습니다.


이 답변은 서버에서 사용되는 기술에 대해 구체적으로 설명 할 필요는 없습니다.
funkybro

@ funkybro 네, 그것은 단지 예일뿐입니다 ... 아무 것도 없습니다 ...
Harish Kurup
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.