>  기사  >  웹 프론트엔드  >  CORS(교차 도메인) 요청 요약 및 테스트

CORS(교차 도메인) 요청 요약 및 테스트

巴扎黑
巴扎黑원래의
2017-06-23 10:50:573071검색

1. 단순 요청과 비단순 요청

교차 도메인 요청은 단순 요청과 비단순 요청으로 나누어지며, 다음 두 가지 조건을 충족하는 경우 단순 요청으로 판단할 수 있습니다. 간단한 요청 요청 방법

요청 방법 Instructions
head 헤더 정보 보내기
get
post

간단한 요청을 위한 HTTP 헤더 Information

http 헤더 정보 Description
accept 클라이언트가 받아들일 수 있는 정보 유형을 지정하세요. 예: image/git
accept-언어 클라이언트가 받아들일 수 있는 자연어를 지정하세요. , 지정하지 않으면 모든 언어가 허용되는 것으로 간주됩니다. 예: accept-언어: zh-cn
content-언어 엔티티 헤더와 리소스를 설명하는 데 사용되는 자연 언어입니다. 이 규칙이 설정되지 않으면 엔터티 콘텐츠가 모든 언어로 읽기용으로 제공됩니다
Last-Event-ID 마지막으로 수신된 이벤트의 식별자
content-type 유형 엔터티 메시지 및 리소스, 세 가지 값으로 제한: application/x-www-form-unlencoded, multipart/form-data, text/plain

2. 간단한 요청 처리 원칙

요청 헤더 설명
Access-Control-Allow-origin 은 도메인 전체에 걸쳐 액세스할 수 있는 웹 사이트를 지정합니다. 이는 *로 설정하여 모든 res.setHeader("Access-Control-Allow-origin","http://localhost")
Access-Control-Allow-Credentials 에 이 헤더가 있음을 나타냅니다. 값은 true이며 도메인 간 액세스가 허용됨을 나타냅니다. 그리고 withCredentials는 쿠키를 서버에 전달할지 여부를 설정하는 클라이언트입니다.
Access-Control-Expose-Headers 기본 코르 요청입니다. 클라이언트의 xmlHttpRequrest는 Cache-Control, Content-Language, Content-Type, Exprise, Last-Modified 및 Pragma와 같은 6개 필드만 가져올 수 있습니다. 기타 헤더는 Access-Control-Expose-Headers

를 통해 지정해야 합니다. Notes

  1. Access-Control-Allow-Credentials가 true로 설정되거나 이 헤더가 있는 경우 Access-Control-Allow-Origin을 사용할 수 없습니다*.

  2. 쿠키를 보낼 때 Access-Control-Allow-Origin은 *일 수 없으며 쿠키는 여전히 동일한 소스에서 발생하며 서버 도메인 이름으로 설정된 쿠키만 업로드됩니다.

  3. 원래 웹페이지 코드의 document.cookie는 서버 도메인 이름에 속한 쿠키(클라이언트)를 읽을 수 없으며, xmlHttp.getResponseHeader("set-cookies")를 통해서도 읽을 수 없습니다.

  4. xmlHttp는 foo 및 boo 객체를 얻을 수 있습니다.

res.setHeader("Access-Control-Allow-origin","*"); 
res.setHeader("Access-Control-Expose-Headers", "foo,boo"),
res.setHeader("foo", "foo");
res.setHeader("boo", "boo");

3. 단순하지 않은 요청 처리 원칙

요청 방법이 PUT, DELETE이거나 Content-type이 application/json인 경우. 단순하지 않은 요청의 경우 2단계:

  1. 사전 검증 "요청", 브라우저는 요청 방법 옵션을 사용하여 요청을 보낸 후 다음 세 개의 헤더

을 가져옵니다.
헤더 이름Description
Origin 은 요청이 전송되는 원본 도메인 이름을 나타냅니다.
Access-Control-Request-Method 도메인 전체에서 실행되어야 하는 요청 메서드(작업이라고도 함)
Access-Control-Request-Headers cors 요청에 의해 전송될 추가 헤더 정보를 지정하여 클라이언트에게 헤더를 사용자 정의할 수 있는 기회를 제공합니다
  1. 서비스는 Access-Control-Allow-Origin 헤더가 지정되었는지와 값이 일치하는지 확인합니다. 확인이 통과되면 다음 헤더 내용이 출력됩니다.

이 사전 검증의 유효 기간을 지정합니다. 단위: 초 참고: Access-Control-Request-Headers 및 Access-Control-Request-Method는 그럴 필요가 없습니다. 개발자가 설정하면 브라우저에서 자동으로 인식됩니다. .Access-Control-Request-Headers는 요청의 사용자 정의 헤더를 기반으로 생성되는 반면 Access-Control-Request-Method는 요청 방법을 기반으로 생성됩니다. 잘못된 헤더 설정 표시:
헤더 이름 설명
Access-Control-Allow-Methods 서버에서 지원하는 cors 요청 방법을 나타냅니다. 여러 요청 방법은 쉼표로 구분됩니다.
Access-Control-Allow-Headers 요청에 액세스 제어가 있는 경우 -Request-Headers 헤더, 이 헤더는 서버에서 지원하는 모든 헤더 정보를 나타내는 반환되어야 합니다. Control-Max-Age

  1. 3. 올바른 설정:
  2. 4. 교차 도메인 쿠키 처리(불가능)

교차 도메인 쿠키는 설정할 수 없습니다. . 서버의 쿠키 출력이 유효하지 않습니다

ajax가 set-Cookies 헤더(클라이언트)를 가져오고 오류 메시지가 표시됩니다

위 내용은 CORS(교차 도메인) 요청 요약 및 테스트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.