Получение запроса не проходит проверку контроля доступа: заголовок "Access-Control-Allow-Origin" отсутствует на запрошенном ресурсе
Я пытаюсь отправить запрос Ajax на сервер Tomcat из моего приложения, но я получаю эту ошибку (мое веб-приложение работает в Chrome):
Ответ на запрос предполетной проверки не проходит проверку контроля доступа. Нет заголовка "Access-Control-Allow-Origin" на запрошенном ресурсе. Поэтому исходный 'null' не допускается. В ответе был код статуса HTTP 403.
Я пробовал использовать
'Access-Control-Allow-Origin' : 'http://localhost:8080/app',
но это не сработало.
Мой код Ajax:
var arr = [1];
$.ajax({
url: 'http://localhost:8080/app',
type: 'POST',
contentType:'application/json',
headers: {
'Access-Control-Allow-Origin' : 'http://localhost:8080',
},
data: JSON.stringify(arr[0]),
success: function(data){
//On ajax success do this
alert(data);
}
});
Ответы
Ответ 1
В принципе, чтобы сделать запросы AJAX с перекрестным доменом, запрашиваемый сервер должен разрешать совместное использование ресурсов ресурсами (CORS). Вы можете узнать больше об этом отсюда:
http://www.html5rocks.com/en/tutorials/cors/
В вашем сценарии вы устанавливаете заголовки в клиенте, который на самом деле должен быть установлен в http://localhost:8080/app код на стороне сервера.
Если вы используете PHP Apache-сервер, вам нужно добавить следующее в свой .htaccess
файл:
Header set Access-Control-Allow-Origin "*"
Ответ 2
В случае запроса службы REST:
Вы должны разрешить CORS (совместное использование ресурсов) в конечной точке вашей службы REST с аннотацией Spring:
@CrossOrigin(origins = "http://localhost:8080")
Очень хороший учебник: https://spring.io/guides/gs/rest-service-cors/