У меня есть 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 зависит от регистра?