Получение запроса не проходит проверку контроля доступа: заголовок "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/