크로스 도메인(Cross-domain)에 대해 들어본 분들은 많으실 텐데요, 크로스 도메인(Cross-domain)이 무엇인지 잘 모르시는 분들이 많을 텐데요. 그럼 크로스 도메인(Cross-domain)이 무엇인지, 어떻게 해결하는지 알아보겠습니다.
1: 교차 도메인이란 무엇입니까?
교차 도메인은 브라우저가 다른 웹사이트의 스크립트를 실행할 수 없음을 의미합니다. 이는 브라우저가 JavaScript에서 구현하는 보안 제한인 브라우저의 동일 출처 정책으로 인해 발생합니다. 브라우저가 한 도메인 이름의 웹페이지에서 다른 도메인 이름으로 리소스를 요청할 때 도메인 이름, 포트 또는 프로토콜의 차이는 도메인 간 것으로 간주됩니다.
둘: 도메인 간 문제를 해결하는 방법
1.jsonp cross-domain
JSONP(JSON with Padding: fill JSON), JSON을 적용하는 새로운 방법,
JSON과 JSONP의 차이점:
1. JSON은 데이터 문자열을 반환하고 JSONP는 스크립트 코드(함수 호출 포함)를 반환합니다.
2. JSONP는 가져오기 요청만 지원하고 게시 요청은 지원하지 않습니다.
(페이지에 스크립트 태그를 추가하고 트리거하는 것과 유사) src 속성을 통해 특정 주소에 대한 요청이므로 Get 요청만 가능)
2. nginx 역방향 프록시:
www.baidu.com/index.html은 www.sina.com/server를 호출해야 합니다. .php, 인터페이스 www .baidu.com/server.php를 작성할 수 있습니다. 이 인터페이스는 백엔드에서 www.sina.com/server.php를 호출하고 반환 값을 가져온 다음 이를 index.html
3으로 반환합니다. . PHP 측 헤더를 수정하세요
header ('Access-Control-Allow-Origin:*') //모든 소스에서 액세스 허용
header ('Access-Control-Allow-Method:POST,GET') | document.domain은 주로 두 번째 상황을 해결하며 기본 도메인은 동일하지만 하위 도메인이 다른 상황에만 적용할 수 있습니다.
document.domain의 설정은 document.domain을 자체적으로만 설정할 수 있습니다. 상위 도메인과 기본 도메인은 동일해야 합니다. 예를 들어, a.b.example.com에 있는 문서의 document.domain은 a.b.example.com, b.example.com, example.com 중 하나로 설정할 수 있지만 c.a.b.example.com으로 설정할 수는 없습니다. 현재 메인 도메인이 더 이상 동일하지 않기 때문에 도메인의 하위 도메인을 baidu.com으로 설정할 수 없습니다.
5, window.name 핵심 사항: window.name은 페이지 수명 주기에서 window.name을 공유합니다.
호환성: 모든 브라우저가 이를 지원합니다.
장점:
브라우저를 활용하는 가장 쉬운 방법입니다. 서로 다른 도메인 간 데이터 전송을 위한 기능
프런트엔드와 백엔드를 특별히 준비할 필요가 없습니다.
단점:
크기 제한: window.name의 최대 크기는 약 2M이며 다를 수 있습니다.
보안: 현재 페이지의 모든 창은 매우 안전하지 않습니다.
데이터 유형: 전달되는 데이터는 문자열로만 제한될 수 있습니다. 자동으로 문자열로 변환됩니다.
6, postMessage
핵심 포인트:
postMessage는 h5에서 도입한 새로운 개념으로, 현재는 계속해서 encapsulation을 진행하고 있으며, window.postMessage를 통해 사용할 수 있습니다. 그리고 보내는 메시지를 모니터링할 수 있습니다.
호환성: 모바일 쪽은 안심하고 사용할 수 있지만 PC 쪽은 다운그레이드해야 합니다.
장점
백엔드 개입 없이 도메인 간이 가능합니다. 하나의 기능에 두 가지 기능을 더한 것입니다. 매개변수(URL 요청, 데이터 전송)를 얻을 수 있습니다.
좋은 모바일 호환성
위 내용은 크로스 도메인이란 무엇이며 어떻게 해결하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!