У меня есть 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 чувствителен к регистру?