Подтвердить что ты не робот

Как работают CORS и Access-Control-Allow-Headers?

Я пытаюсь сделать запрос CORS на POST с сайта domain.com на a.domain.com.

Мой javascript выглядит так

$('#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.com/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.com
Origin:http://domain.com:3000
Referer:http://domain.com:3000/home

ОПЦИИ РЕАГИРОВАНИЯ

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

Этот запрос возвращается с 200, как указано. На моем сервере у меня есть тот же маршрут с методом POST, и это то, что я получаю взамен после OPTIONS

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

ПОСЛЕ ЗАПРОСА

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

а запрос POST отменяется/терпит неудачу.

Мой вопрос: нужен ли мне также контроль доступа-источника-источника на контроллере POST?

У меня есть файл cookie для авторизации с доменом .domain.com, который cookie получил в одно время в запросе и он не отправляется сейчас. Любая идея, почему это произойдет?

4b9b3361

Ответ 1

Да, вы должны иметь заголовок Access-Control-Allow-Origin: http://domain.com:3000 или Access-Control-Allow-Origin: * как для ответа OPTIONS, так и для ответа POST. Вы также должны включить заголовок Access-Control-Allow-Credentials: true в ответ POST.

В ответе OPTIONS также должен быть заголовок Access-Control-Allow-Headers: origin, content-type, accept для соответствия запрошенному заголовку.

Ответ 2

Если вы используете PHP для добавления следующих строк

header ( " Access -Control- Allow-Origin : *") ;
header ( " Access- Control-Allow -Headers : *") ;

Вероятно, решите свою проблему