Deaktivieren Sie die HTTP-Authentifizierung für OPTIONS-Anfragen in Tomcat

Deaktivieren Sie die HTTP-Authentifizierung für OPTIONS-Anfragen in Tomcat

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?

verwandte Informationen