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

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

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

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

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

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

решение1

Может бытьэтот ответпоможет. Короче говоря, нам нужно настроить сервер 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>

решение2

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

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

Связанный контент