0

Ошибка доступа: отсутствует заголовок 'Access-Control-Allow-Origin' в запрашиваемом ресурсе

20

Я пытаюсь отправить Ajax-запрос на сервер Tomcat из моего приложения, но получаю следующую ошибку (мое веб-приложение работает в Chrome):

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 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){
       // При успешном выполнении ajax сделать это
       alert(data);
   }
});

Как я могу решить эту проблему с CORS?

2 ответ(ов)

0

Чтобы выполнять кросс-доменные AJAX-запросы, запрашиваемый сервер должен разрешать кросс-оригинальное совместное использование ресурсов (CORS). Вы можете подробнее узнать об этом по следующей ссылке: http://www.html5rocks.com/en/tutorials/cors/

В вашем случае вы устанавливаете заголовки на клиенте, но эти заголовки должны быть установлены на стороне сервера, работающего по адресу http://localhost:8080/app.

Если вы используете сервер PHP с Apache, вам нужно добавить следующее в ваш файл .htaccess:

Header set Access-Control-Allow-Origin "*"

Это позволит вашему клиенту отправлять запросы к серверу, находящемуся на другом домене.

0

В случае запроса к REST-сервису:

Вам необходимо разрешить CORS (кросс-доменный обмен ресурсами) на конечной точке вашего REST-сервиса с помощью аннотации Spring:

@CrossOrigin(origins = "http://localhost:8080")

Очень хороший учебник: https://spring.io/guides/gs/rest-service-cors/

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь