programing

CORS 및 Access-Control-Allow-Header는 어떻게 작동합니까?

stoneblock 2023. 9. 26. 21:57

CORS 및 Access-Control-Allow-Header는 어떻게 작동합니까?

CORS 요청 POST를 하려고 합니다.domain.example로.a.domain.example.

내 자바스크립트는 이렇게 생겼습니다.

$('#fileupload').fileupload({
  xhrFields: {
    withCredentials: true
  },
  dataType: 'json',
  url: $('#fileupload').data('path'),
  singleFileUploads: true,
  add: function(e, data){
    data.submit();
  }
});

처음에는 OPTIONS 경로가 이렇게 호출되는 것을 봅니다.

Request URL: https://a.domain.example/some/route
Request Method:OPTIONS
Status Code:200 OK

옵션 요청:

Access-Control-Request-Headers:origin, content-type, accept
Access-Control-Request-Method:POST
Host:a.domain.example
Origin:http://domain.example:3000
Referer:http://domain.example:3000/home

옵션 응답

Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:POST
Access-Control-Allow-Origin:http://domain.example:3000
Connection:keep-alive
Content-Length:0
Content-Type:text/html;charset=utf-8

그 요청은 200개와 같은 것으로 다시 들어옵니다.내 서버에서, 나는 다음과 같은 경로를 가지고 있습니다.POST방법 그리고 이것은 내가 답례로 얻는 것입니다.OPTIONS

Request URL:https://a.domain.example/some/route

요청 게시

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryjwr5Pk7WBcfzMdbO
Origin:http://domain.example:3000
Referer:http://domain.example:3000/home

그리고.POST요청이 취소되었습니다/fails.

제 질문은 POST 컨트롤러에 access-control-allow-origin도 있어야 합니까?

도메인이 있는 인증용 쿠키가 있습니다..domain.example그 쿠키는 요청에 따라 한 번 발송되었는데 지금은 발송되지 않고 있습니다.왜 그런 일이 벌어지는지 아십니까?

예, 머리말이 있어야 합니다.Access-Control-Allow-Origin: http://domain.example:3000아니면Access-Control-Allow-Origin: *Options 응답과 POST 응답 모두에 적용됩니다.머리글을 포함해야 합니다.Access-Control-Allow-Credentials: truePOST 응답을 통해서도.

OPTIONS 응답에는 머리글도 포함되어야 합니다.Access-Control-Allow-Headers: origin, content-type, accept요청한 헤더와 일치합니다.

언급URL : https://stackoverflow.com/questions/12630231/how-do-cors-and-access-control-allow-headers-work