IT

Chrome이 오리진 헤더를 동일 오리진 요청에 추가함

itgroup 2023. 10. 25. 23:15
반응형

Chrome이 오리진 헤더를 동일 오리진 요청에 추가함

우리는 AJAX 요청을 로컬에서 실행되는 서버에 게시하고 있습니다.

xhr.open("POST", "http://localhost:9000/context/request");
xhr.addHeader(someCustomHeaders);
xhr.send(someData);

이 javascript가 실행중인 페이지는 localhost:9000에서도 제공되고 있습니다. 즉, 완전히 동일한 오리진 요청처럼 보입니다.

그러나 어떤 이유에서인지 Google Chrome은 항상 결과 요청에 오리진 헤더를 설정하여 CORS 요청이라는 잘못된 가정 하에 서버가 요청을 차단하게 됩니다.

Firefox에서는 이런 일이 발생하지 않습니다.

또한 Firefox와 Chrome 모두 OPSONSE 사전 비행 요청을 보내지 않아 혼란스럽습니다. 서버에서 오리진 및 사용자 지정 헤더가 허용되는지 확인하기 위해 먼저 사전 비행하지 않고 오리진 헤더를 설정하는 이유는 무엇입니까?

이 사건에서 무슨 일이 일어나고 있는지 아는 사람?우리가 CORS 사양을 오해하고 있는 것입니까?

Chrome과 Safari는 다음을 포함합니다.Origin동일한 오리진 POST/PUT/DEELET 요청에 대한 헤더(동일한 오리진 GET 요청에는 오리진 헤더가 없음).Firefox에 포함되지 않습니다.Origin동일한 origin 요청에 대한 헤더입니다.브라우저는 동일한 오리진 요청에 CORS 응답 헤더를 예상하지 않으므로 CORS 헤더가 있는지 여부에 관계없이 동일한 오리진 요청에 대한 응답이 사용자에게 전송됩니다.

확인하는 것을 추천합니다.Host헤더와 도메인이 일치하는 경우Origin헤더, 요청을 CORS로 취급하지 마십시오.머리글은 다음과 같습니다.

Host: example.com
Origin: http://example.com

참고:Origin는 스킴(https/http), 도메인 및 포트를 갖지만,Host도메인과 포트만 가질 것입니다.

RFC 6454 - 웹 오리진 개념에 따르면 오리진의 존재는 동일한 오리진 요청을 포함한 모든 HTTP 요청에 대해 실제로 합법적입니다.

https://www.rfc-editor.org/rfc/rfc6454#section-7.3

"사용자 에이전트는 HTTP 요청에 오리진 헤더 필드를 포함할 수 있습니다."

언급URL : https://stackoverflow.com/questions/15512331/chrome-adding-origin-header-to-same-origin-request

반응형