Ich habe eine API, die durch die HTTP-Basisauthentifizierung geschützt ist.
Wenn ich AJAX-Anfragen an die API stellen möchte, sendet der Browser eine OPTIONS-Anfrage, die keinen Autorisierungsheader enthält. Daher wird sie abgelehnt und mein AJAX-Aufruf wird daher vom Browser nicht zugelassen.
Ich habe versucht, Tomcat so zu konfigurieren, dass OPTIONS-Anfragen nicht authentifiziert werden, aber es hat nicht funktioniert.
Wie kann ich die HTTP-Authentifizierung für OPTIONS-Anfragen in Tomcat deaktivieren?
Antwort1
Vielleichtdiese Antwortwird helfen. Kurz gesagt müssen wir den Tomcat-Server so konfigurieren, dass er die Anfrage auch ohne Authentifizierung an den CorsFilter weiterleitet, und zwar etwa so:
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
<http-method>OPTIONS</http-method>
</web-resource-collection>
<!-- no auth-constraint here -->
</security-constraint>
Stellen Sie sicher, dass Sie das Element „auth-constraint“ NICHT einschließen. Das folgende Beispiel wird daher NICHT FUNKTIONIEREN:
<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>
Antwort2
Sie müssen für Ihren Zweck eine Whitelist schreiben
Weitere Informationen finden Sie unter:Ist das Verbot von HTTP-Methoden auf Tomcat groß- und kleinschreibungsabhängig?