$http GET не отправляет JSESSIONID в chrome, но работает в firefox angularjs

так что у меня есть этот код

$http({
     'method': 'GET',
         'url': 'http://www.example.com',
         'withCredentials': true,
     headers: {
         'Content-type': 'application/json'
     }
 }).
 success(function (data, response, headers, status) {

});

Это будет возвращено с массивом записей JSON, а HTTP-запрос использует учетные данные, которые являются JSESSIONID, которые используются для каждого последовательного вызова бэкэнда.

Проблема в том, что он работает в Firefox, но не в Chrome. Таким образом, firefox отправляет файлы cookie, содержащие JSESSIONID, но не chrome, в то время как я уже установил withCredentials на true

Почему это происходит?


person Eka RudiAnto    schedule 11.07.2014    source источник
comment
Вы пытались отладить запрос, вы уверены, что заголовки withCredentials отправляют правильно?   -  person Narek Mamikonyan    schedule 11.07.2014
comment
как мне в этом убедиться? @Нарек Мамиконян   -  person Eka RudiAnto    schedule 11.07.2014
comment
когда вы открываете сетевой раздел chrome dev tools, вы можете видеть заголовки запросов и т. д.   -  person Narek Mamikonyan    schedule 11.07.2014
comment
на самом деле это заголовок ответа учетных данных «Access-Control-Allow-Credentials: true», но он не отправляет JSESSIONID, как это делает firefox   -  person Eka RudiAnto    schedule 11.07.2014
comment
для вашей информации хром выдает эту ошибку «XMLHttpRequest не может загрузить example.com/orders. Запрос был перенаправлен на «example.com/auth/login, что запрещено для перекрестного происхождения. запросы, требующие предварительной проверки. ' @Нарек Мамиконян   -  person Eka RudiAnto    schedule 11.07.2014


Ответы (1)


Это исключение CORS, когда вы пытаетесь загрузить данные из другого домена, что приводит к ошибке, подробнее о CORS.

А также проверьте мой ответ, как включить CORS на angular js, но, к сожалению, ваш сервер также должен включить CORS.

подробнее

person Narek Mamikonyan    schedule 11.07.2014
comment
ну на самом деле сервер уже настроен на включение CORS для каждого метода.. знаете ли вы со стороны angular, чтобы включить CORS ??? - person Eka RudiAnto; 11.07.2014
comment
проверьте ссылку в моем ответе при доступе к localhost api в chrome neterr insecure response"> stackoverflow.com/questions/24598187/ - person Narek Mamikonyan; 11.07.2014
comment
Я использовал ваш вариант, и он не работает, я думаю. Конфигурация $httpProvider такая же, как $http? @Нарек Мамиконян - person Eka RudiAnto; 12.07.2014
comment
Вы уверены, что ваш сервер отвечает теми же заголовками? - person Narek Mamikonyan; 13.07.2014
comment
да, я почти уверен ... разница в том, что chrome не отправляет учетные данные JSESSIONID, как firefox ... странно, потому что я уже установил контроль доступа с учетными данными в true ... @NarekMamikonyan - person Eka RudiAnto; 13.07.2014