Ошибка CORS в браузере в угловом приложении - PullRequest
0 голосов
/ 21 апреля 2019

Здравствуйте, сообщество разработчиков, я обращаюсь к RESTful API (написанному на Spring Hibernate) из клиента Angular 6.Когда я запускаю слой Angular из моего локального компьютера, я получаю сообщение об ошибке CORS:

"Доступ к XMLHttpRequest по адресу" http: /// SpringDemoSecurity / login "from origin" http://localhost:4200' заблокировансогласно политике CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: у него нет статуса HTTP ok. "Я добавил заголовки Allow-Access- * в свой ответ от уровня Java, но не помог.Я вижу эти заголовки в своем ответе от приложения почтальона.Я не могу избавиться от этих ошибок в своем браузере.

Следил за многими потоками при переполнении стека и в других местах, чтобы добавить все заголовки в объектах запросов и ответов и проверил их наличие с помощью клиентского приложения Postman REST, но безрезультатно.Java Layer - это экземпляр AWS EC2, в то время как Angular работает на локальном компьютере.

Ниже приведен фрагмент кода Java в моем классе Filter:

response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Max-Age", "864000");
response.addHeader("Access-Control-Allow-Methods", "GET, OPTIONS, HEAD, PUT, POST, PATCH, DELETE");
response.addHeader("Access-Control-Allow-Headers", "X-Requested-With,content-type,authorization,token");
response.addHeader("Access-Control-Allow-Credentials", "true");
// For HTTP OPTIONS verb/method reply with ACCEPTED status code -- per CORS handshake
        if (request.getMethod().equals("OPTIONS")) {
            response.setStatus(HttpServletResponse.SC_ACCEPTED);
            return;
        }

Я не могу понять это.Перепробовал много вещей по переполнению стека.Любая помощь по этому вопросу высоко ценится.- Свати

Ответы [ 3 ]

0 голосов
/ 22 апреля 2019

Источник CORS - это заблокированный браузер, и на бэкэнде нечего делать, чтобы это разрешить.Есть два способа избежать:

1) Если вы используете json, попробуйте использовать JSONP

2) (что я сделал здесь). Конвертируйте ваш бэкэнд для приема соединений Websocket.веб-сокет позволяет получить доступ к другому источнику.Адрес вашего бэкэнда будет следующим: ws: // localhost: 4200.

Надеюсь, что поможет:)

0 голосов
/ 09 июля 2019

Используйте для этого прокси-технику в angular 6. Вам нужно создать файл proxyconfig.json в корне углового приложения. Вы можете следить за этим видео - CORS на угловом 6

Или это может быть решено в back-end также при создании API.

0 голосов
/ 22 апреля 2019

После получения метаданных OPTIONS вы в настоящее время отвечаете HttpServletResponse.SC_ACCEPTED, который обозначает код ответа 202.Вам необходимо отправить код 200 (HttpServletResponse.SC_OK).Проверьте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...