Cross-domain은 js에서 자주 접하게 되는데, 이번 글에서는 이에 대해 자세히 설명하겠습니다.
동일 출처 정책은 좋은 보안 메커니즘이지만 때로는 다른 도메인에서 데이터를 얻거나 상호 작용해야 할 때도 있습니다. 이때 동일한 출처 정책은 장애를 일으킬 수 있습니다.
크로스 도메인은 다양한 소스의 데이터 정보 전송 및 상호 작용을 실현하는 것입니다.
cross-domain을 달성하는 방법에는 여러 가지가 있습니다.
1.JSONP
JSONP는 JSON with Padding(Parametric JSON)의 약어이며 JSON의 새로운 적용 방법입니다.
3f1c4e4b6b16bbbd69b2ee476dc4f83a는 동일 출처 정책에 의해 제한되지 않고 다른 도메인에서 리소스를 로드할 수 있기 때문에 JSONP 구현은 동적 3f1c4e4b6b16bbbd69b2ee476dc4f83a 요소의 사용에 의존합니다. 3f1c4e4b6b16bbbd69b2ee476dc4f83a 요청
<script src=""http://freegeoip.net/json/?callback=handleResponse></script>가 반환한 JSONP는 콜백 함수와 JSON 데이터의 두 부분으로 구성됩니다.handleResponse(JSON)
단점: JSONP는 실행을 위해 다른 도메인에서 코드를 로드합니다. 다른 도메인이 안전하지 않은 경우 응답에 일부 악성 코드가 포함될 가능성이 있으므로 현재 JSONP를 사용하는 것을 포기하는 것 외에는 이를 추구할 방법이 없으므로 보안이 취약합니다. 데이터 소스가 보장되어야 합니다.
2.CORS
CORS(Cross-Origin Resource Sharing, Cross-Origin Resource Sharing)는 Ajax 크로스 도메인 요청 방법으로, 크로스 도메인 리소스에 액세스해야 할 때 브라우저와 서버가 통신해야 하는 방법을 정의합니다.
CORS의 기본 아이디어는 정의된 HTTP 헤더를 사용하여 브라우저가 서버와 통신하여 요청 또는 응답이 성공할지 여부를 결정하도록 하는 것입니다.
CORS는 단순 요청과 복합 요청으로 구분됩니다.
1. 요청 방법은 get, post, head 중 하나입니다.
2. 이러한 유형을 초과합니다. Accept, Accept-Language, Content-Language, Last-Event-ID, Content-Type은 application/x-www-form-urlencoded, multipart/form-data, text/의 세 가지 값으로 제한됩니다. plain
간단한 요청 예:
도메인 전체에 걸쳐 간단한 요청을 보낼 때 요청 소스를 나타내기 위해 Origin 헤더가 정의됩니다.
Oring: http://www.baidu.com //이 요청이 http임을 나타냅니다. ://www.baidu.com
서버가 요청이 허용된다고 생각하면 Access-Control-Allow-Origin 헤더에 동일한 소스 정보를 반환합니다(공개 리소스라고 가정하면 " *")
Access-Control-Allow -Origin: http://www.baidu.com
해당 헤더가 없거나 헤더의 소스 정보가 일치하지 않는 경우 브라우저는 반환된 응답을 가로챕니다. .
복잡한 요청은 정식 요청을 보내기 전에 현재 도메인이 서버의 권한 범위 내에 있는지 확인하기 위해 실행 전 요청이 전송된다는 점을 제외하면 단순 요청과 유사합니다. 서버가 받아들일 수 있는 헤더 정보, 요청 방식, 데이터 타입 등 허가를 받기 전까지 공식적인 의사소통은 시작되지 않습니다.
다음은 실행 전 요청 헤더와 응답 헤더입니다
//이것은 실행 전 요청 헤더입니다. OPTIONS /cors HTTP/1.1 //요청은 옵션을 반환합니다. 원본: https://api.qiutc.me //요청 source ; Access-Control-Request-Method: PUT // 요청 방법 Access-Control-Request-Headers:
User-Agent: Mozilla/5.0...
//이것은 실행 전 응답 헤더입니다. /1.1 200 OK날짜: 2008년 12월 1일 월요일 01:15:39 GMT
서버: Apache/2.0 .61 (Unix)
Access-Control-Allow-Origin: https://api.qiutc.meAccess-Control-Allow- 메서드: GET, POST, PUT //서버에서 지원하는 모든 도메인 간 방법 Access-Control-Allow를 나타냅니다. -Headers: : Keep-Alive
Content-Type: text/plain
이 문서에서는 도메인 간 관련 문제를 설명합니다. 자세한 내용은 PHP 중국어 웹사이트를 참고하세요.
관련 권장 사항:
위 내용은 크로스 도메인이란 무엇입니까? 교차 도메인에 대한 구현 양식은 몇 개입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!