Я использую apache tomcat V7.0. С клиентской стороны я делаю вызов ajax для доступа к службе REST, размещенной на сервере apache tomcat и построенной с использованием JAX-RS. У меня есть только один метод GET для отдыха. Клиент не находится в том же домене, что и на сервере. Предположим, что я сохранил html на своем рабочем столе, и я запускаю html-файл. Это означает, что у меня есть этот html-файл без домена. Ответ, который я получаю, - это сервер: [HTTP/1.1 403 Запрещено 16 мс]. Это ошибка CORS. Чтобы избавиться от этой ошибки я сделал следующие вещи: стороны клиента код:Невозможно обрабатывать запросы CORS в apache tomcat
xmlhttp = new XMLHttpRequest();
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.setRequestHeader("Access-Control-Allow-Origin", "*");
xmlhttp.setRequestHeader("Access-Control-Allow-Methods","GET, POST");
//Normal ajax calls of setting url and opening requests follows
Сервера конфигурации стороны web.xml:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>10</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Даже после добавления всех CORS обработки, как на сервере и клиентская сторона. Я получаю ошибку cors. Я предполагаю, что запрос даже не доходит до фильтров и отклоняется. Есть ли какая-то конфигурация, которая требуется на сервере, чтобы пропустить запрос. В apache я искал в Интернете и обнаружил, что мы можем сделать это в файле .htaccess, но что делать в случае apache tomcat?
403 не является особой ошибкой cors. Пожалуйста, добавьте трассировку стека к вашему вопросу для получения лучшего ответа. –
Точная ошибка, которую я получил в mozilla: Запрос на перекрестный запрос заблокирован: политика одного и того же происхождения запрещает чтение удаленного ресурса по адресу http: // localhost: 8080/restMailer/rest/mailService? Query = {% 22subject% 22:% 22Test% 201% 22% 22vendorCode% 22:% 22V00002% 22% 22name% 22:% 22Test% 202% 22% 22enquiry% 22:% 22Test% 203% 22% 22contactNumber% 22:% 22Test% 204% 22,% 22email% 22:% 22Test% 205% 22,% 22icode% 22:% 22as723asd343ascfgru323sA% 22}. Это можно устранить, переместив ресурс в тот же домен или включив CORS. – john0609
Похоже, что решения этой проблемы нет. Я просто хотел изменить свойства заголовка всякий раз, когда запрос поступает на порт 8080 из tomcat. – john0609