2015-08-24 4 views
3

Я пытаюсь отправить запрос CORS POST на сервер.Нет заголовка Referer в запросе CORS от IE или Firefox

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

Javascript является:

$.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 headers

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

Есть ли способ, чтобы гарантировать, что referrer будет отправлен с запросом предварительной проверки OPTIONS? А если нет - есть ли другой способ получить ссылочный URL-адрес, чтобы добавить заголовок allow origin?

+1

Зачем вам нужно знать ссылочный URL? Обычно 'Allow-Origin' устанавливается на основе фактических политик безопасности; другими словами, сайт настроен на то, чтобы разрешить определенное происхождение или все происхождение. – Pointy

+0

Существует несколько разных URL-адресов, которые должны иметь доступ, и URL-адреса изменяются в зависимости от среды (в реальном времени, в режиме постановки и т. Д.). Поэтому я проверяю входящий URL-адрес на список приемлемых. Если он там, я добавляю заголовок allow origin для входящего URL. – Bonnotbh

+0

Ah OK - узнайте что-нибудь каждый день; Я предположил, что заголовок CORS может включать список URL-адресов, но, по-видимому, это либо одно происхождение, либо '*'. – Pointy

ответ

2

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

 Смежные вопросы

  • Нет связанных вопросов^_^