Назад | Перейти на главную страницу

Отключить HTTP-аутентификацию для запросов OPTIONS в Tomcat

У меня есть API, защищенный базовой аутентификацией HTTP.

Когда я хочу сделать запросы AJAX к API, браузер отправляет запрос OPTIONS, который не содержит заголовок авторизации, поэтому он отклоняется, и, таким образом, мой вызов AJAX не разрешен браузером.

Я попытался настроить Tomcat так, чтобы он не аутентифицировал запросы OPTIONS, но мне не удалось заставить его работать.

Как отключить HTTP-аутентификацию для запросов OPTIONS в Tomcat?

Может быть этот ответ поможет. Короче говоря, мы должны настроить сервер Tomcat для пересылки запроса в CorsFilter даже при отсутствии аутентификации, используя что-то вроде этого:

<security-constraint>
    <web-resource-collection>
        <url-pattern>/*</url-pattern>
        <http-method>OPTIONS</http-method>
    </web-resource-collection>
    <!-- no auth-constraint here -->
</security-constraint>

убедитесь, что вы НЕ включаете элемент auth-constraint. Итак, следующий пример НЕ РАБОТАЕТ:

<security-constraint>
    <web-resource-collection>
        <url-pattern>/*</url-pattern>
        <http-method>OPTIONS</http-method>
    </web-resource-collection>
    <auth-constraint/><!-- this will prevent OPTIONS request -->
</security-constraint>

вы должны написать белый список для вашей цели

для получения дополнительной информации см .: Запрещение методов HTTP на Tomcat зависит от регистра?