Нет заголовка Referer в запросе CORS из IE или Firefox

Я пытаюсь отправить запрос CORS POST на сервер.

В Chrome это работает так, как ожидалось: предварительный запрос OPTIONS отправляется на сервер, сервер отвечает заголовками управления доступом, отправляется запрос POST. Когда я пытаюсь сделать это в IE или Firefox, реферер не отправляется с запросом OPTIONS, поэтому я не могу добавить заголовок access-control-allow-origin (поскольку это делается программно).

Джаваскрипт это:

    $.ajax({
        url: $(this).attr('href'),
        type: 'POST',
        xhrFields: {
            withCredentials: true,
        },
        contentType: 'application/json; charset=utf-8;',
        data: JSON.stringify(data),
        success: function (response) {
            alert(response);
        },
    });
    return false;
});

Заголовки в Chrome следующие: Заголовки Chrome

Заголовки в Firefox следующие: Заголовки Firefox

Есть ли способ гарантировать, что реферер будет отправлен с предварительным запросом OPTIONS? А если нет, есть ли другой способ получить URL-адрес ссылки, чтобы я мог добавить заголовок разрешения происхождения?


person Bonnotbh    schedule 24.08.2015    source источник
comment
Зачем вам нужно знать реферальный URL? Обычно Allow-Origin устанавливается на основе действующих политик безопасности; другими словами, сайт настроен на разрешение некоторых конкретных источников или всех источников.   -  person Pointy    schedule 24.08.2015
comment
Есть несколько разных URL-адресов, к которым должен быть доступ, и URL-адреса меняются в зависимости от среды (живая, промежуточная и т. д.). Поэтому я проверяю входящий URL-адрес по списку допустимых. Если он есть, я добавляю заголовок разрешения источника в качестве входящего URL-адреса.   -  person Bonnotbh    schedule 24.08.2015
comment
Ну хорошо - каждый день чему-нибудь учись; Я предполагал, что заголовок CORS может включать список URL-адресов, но, видимо, это либо одно происхождение, либо *.   -  person Pointy    schedule 24.08.2015


Ответы (1)


Решено это с помощью заголовка Origin, который отправляется вместе с предварительным запросом. Поэтому, если исходный URL-адрес является одним из допустимых хостов, добавьте заголовок access-control-allow-origin с исходным URL-адресом.

person Bonnotbh    schedule 24.08.2015