먼저, 몇 가지 준비를하겠습니다. 그렇지 않으면, 내가 의미하는 바를 이해한다면 다른 사람들은 이해하지 못합니다. 다른 사람들이 이해하더라도 항상 이해하지 못하는 사람들이있을 것입니다. 그러면 당신은 그것을 말해야합니다. 내 말은이 설명을 수행해야한다는 것입니다. 대답은 필수입니다. 모든 사람이 이해하기 쉽게하기 위해.
예제로 두 개의 주요 도메인 이름 또는 하나의 기본 도메인 이름 + 1 개의 2 단계 도메인 이름을 취하여 크로스 도메인 문제를 보여줄 수 있습니다.
클라이언트 A.com
서버 B.com 또는 Sacom
AngularJS 버전 v1.2.25
준비는 매우 잘 이루어졌으며 편집자를 Subline으로 거의 노출 시켰습니다. 나는 그 에게이 평범한 사람을 말하지 않을 것입니다.
누군가이 질문이 오랫동안 주변에 있었다고 소리 쳤다. 지금 물어 보는 요점은 무엇입니까? 여전히 꽃을 속일 수 있습니까? 글쎄, 나는 정말로 꽃을 열 수 있습니다. 쇼를 보자,이 기사에서 우리가 공연 할 것은 완전한 도메인의 예입니다.
다음으로 클라이언트가 데이터를 요청하는 방법을 살펴 보겠습니다
우리 코드는 A.com 도메인 이름으로 작성됩니다.
<! docType html> <html lang = "en"ng-app = "app"> <head> <meta charset = "utf-8"> <title> </title> <script src = "./ Angular.min.js"> </script> <script type = "text/javaScript"> Angular.Module []); app.controller ( 'appctrl', [ '$ scope', function ($ scope) {$ http ({method : 'jsonp', url : 'http://www.b.com/test.php?callback=json_callback',}) .success (msg) {datle./// $ http.jsonp ( 'http://www.b.com/test.php?callback=json_callback') .success (function (msg) {console.log (msg);});우리는 이것이 JSONP 형태로 직접 크로스 도메인 요청임을 알 수 있으며, 그 운영은 jQuery의 크로스 도메인 요청 방법과 정확히 동일합니다. 콜백이 고정되어 있습니다. 즉, JSON_CALLBACK은 변경하지 마십시오.
Test.php가 서버 B.com의 요청 된 데이터를 처리하는 방식을 살펴 보겠습니다. 여기서 우리는 기본 PHP 방법을 참조로 사용합니다.
$ 콜백 = isset ($ _ get [ 'Callback'])? $ _get [ 'Callback'] : default_callback; 종료 ($ 콜백. '('. json_encode ($ data). ');클라이언트 콘솔의 결과를 다시 살펴 보겠습니다.
이 시점에서 우리는 도메인을 통해 성공적으로 요청했습니다!
마지막으로, 작은 요약을하고 핵심 사항에주의를 기울여 보겠습니다.
1. 클라이언트가 도메인을 통해 요청한 URL 이후에 추가 된 매개 변수는? 콜백 = json_callback입니다. 매개 변수 콜백의 값은 json_callback으로 지정됩니다. 자본화, 즉 JSON_CALLBACK은 변경하지 않습니다. 이것은 큰 구덩이 인 것 같습니다. 콜백의 값이 약간 변경되면 클라이언트는 전 세계적으로 콜백 함수를 정의해야하며 어떻게 처리를 위해 $ 범위로 전달할 수 있습니까? 불필요한 문제를 피하기 위해 다음은 의미하는 바입니다.
2. 서버를 다시보십시오. 서버는 $ 콜백 = $ _get [ 'Callback']을 지정해야합니다. 콜백을 받으면 수신 된 콜백이 클라이언트가 작성한 콜백의 가치가 아님을 알게됩니다. 클라이언트는 AngularJS의 내부 메커니즘을 트리거하기 위해 JSON_CALLBACK을 지정합니다.