Ограничительный Заголовок "Access-Control-Allow-Origin" отсутствует в запрашиваемом ресурсе.
Я пытаюсь сделать следующий вызов с Restangular к службе JAX-RS REST (то есть с включенным COR).
var baseUsers = Restangular.all("users");
$scope.users = '{[]}';
$scope.users = baseUsers.getList().then(function(result) {
console.log("Got users", response.status);
}, function(response) {
console.log("Failed to find users with status code", response.status);
});
Но я продолжаю видеть эту ошибку в консоли:
XMLHttpRequest cannot load http://135.60.151.27:9080/app/users. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8383' is therefore not allowed access.
Из POSTMan я вижу заголовки CORs в ответе:
Access-Control-Allow-Credentials →true
Access-Control-Allow-Headers →Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since
Access-Control-Allow-Methods →GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin →*
Content-Length →2
Content-Type →application/json
Date →Thu, 03 Jul 2014 14:34:25 GMT
X-Powered-By →Servlet/3.0
Я подумал, что это может быть вызвано проблемой REST OPTIONS, но это также возвращает те же заголовки CORs.
1 ответ
Access-Control-Allow-Credentials: true
не смешивается с Access-Control-Allow-Origin: *
В спецификации:
Строка "*" не может использоваться для ресурса, который поддерживает учетные данные.
Когда вы разрешаете учетные данные, крайне опасно разрешать любое происхождение. Таким образом, любой сайт, который вы посещаете в Интернете, теоретически может действовать от вашего имени на вашем неправильно настроенном веб-сайте без вашего согласия или даже без вашего уведомления.
Таким образом, вы должны включить только один хост в Access-Control-Allow-Origin
или внедрить систему, которая добавляет имя хоста из Host
заголовок запроса, если он соответствует предопределенному белому списку / регулярному выражению.