在 Tomcat 中禁用 OPTIONS 请求的 HTTP 身份验证

在 Tomcat 中禁用 OPTIONS 请求的 HTTP 身份验证

我有一个受 HTTP 基本身份验证保护的 API。

当我想针对 API 发出 AJAX 请求时,浏览器发送一个不带有授权标头的 OPTIONS 请求,因此该请求被拒绝,因此浏览器不允许我的 AJAX 调用。

我尝试将 Tomcat 配置为不验证 OPTIONS 请求,但我无法让它工作。

如何在 Tomcat 中禁用 OPTIONS 请求的 HTTP Auth?

答案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

你必须为你的目的写一个白名单

更多信息请参阅:禁止 Tomcat 上的 HTTP 方法区分大小写吗?

相关内容