Вот мой файл web.xml:
https://pastebin.com/SSMu7qKb
И я пытаюсь отправить запрос GET из моего приложения со следующими заголовками
'Content-Type': 'application/json',
'Authorization': "Basic ZGVtbzpkZW1v",
'Cache-Control': "no-cache"
до http://localhost:8080/engine-rest/user
Я проследил свою просьбу с помощью Почтальона. Вот заголовки в запросе:
[{“key”:“Access-Control-Request-Method”,“value”:“GET”,“description”:""},
{“key”:“Origin”,“value”:“http://evil.com/",“description”:"”},
{“key”:“X-DevTools-Emulate-Network-Conditions-Client
Id”,“value”:“6B279966ED84E2BE5D06B4F083711A81”,“description”:""},
,{“key”:“Access-Control-Request-Headers”,“value”:“authorization,cache-control,content-type”,“description”:""},{“key”:“Accept”,“value”:"/",“description”:""},
{“key”:“Accept-Encoding”,“value”:“gzip, deflate, br”,“description”:""}
,{“key”:“Accept-Language”,“value”:“en-US,en;q=0.9”,“description”:""},
{“key”:“Authorization”,“value”:“Basic ZGVtbzpkZW1v”,“description”:""}]
Если я добавлю заголовок авторизации в Postman к тем, что у меня есть выше, я могу отправить запрос. В противном случае я получаю код ошибки 401 (Несанкционированный). Но ВАРИАНТЫ не должны запрашивать разрешение.
Вот код для фильтра:
https://github.com/quickhack/tomcat/blob/master/src/main/java/org/apache/catalina/filters/CorsFilter.java
CorsFilter - это первый фильтр в моем файле web.xml, а в CorsFilter.java, если запрос определен как Preflight , он не будет переходить к следующему фильтру (см. Метод handlePreflightCORS). Поэтому обычно, когда у меня есть запрос Preflight, он не должен проверять авторизацию. Так почему я получаю ошибку 401?