将CORS过滤器应用于Tomcat 4XX响应

将CORS过滤器应用于Tomcat 4XX响应,tomcat,jersey,cors,basic-authentication,http-status-code-401,Tomcat,Jersey,Cors,Basic Authentication,Http Status Code 401,我有一个配置了基本身份验证的Tomcat6服务器,通过CORS过滤器向AngularJS前端提供RESTAPI服务。在标头中提供有效凭据后,一切正常。当身份验证未被批准时(401403),CORS头不会被附加,客户端无法确定状态代码。我有没有办法配置CORS过滤器来影响这些响应?有人知道我在哪里可以找到一个显示过滤器和身份验证如何适合Tomcat架构的图形图吗 我在Chrome中遇到的错误是:(我没有足够的声誉来发布图片) 安全配置如下所示: <security-role>

我有一个配置了基本身份验证的Tomcat6服务器,通过CORS过滤器向AngularJS前端提供RESTAPI服务。在标头中提供有效凭据后,一切正常。当身份验证未被批准时(401403),CORS头不会被附加,客户端无法确定状态代码。我有没有办法配置CORS过滤器来影响这些响应?有人知道我在哪里可以找到一个显示过滤器和身份验证如何适合Tomcat架构的图形图吗

我在Chrome中遇到的错误是:(我没有足够的声誉来发布图片)


安全配置如下所示:

<security-role>
    <role-name>phys_user</role-name>
</security-role>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Rest Service</web-resource-name>
        <url-pattern>/rest/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>phys_user</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>BASIC</auth-method>
</login-config>
。。。在
web.xml
中:

<init-param>
    <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
    <param-value>cm.security.ResponseCorsFilter</param-value>
</init-param>

com.sun.jersey.spi.container.ContainerResponseFilters
cm.security.ResponseCorsFilter
我还尝试使用库中的CORS过滤器:

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    <init-param>
        <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedMethods</param-name>
        <param-value>GET, POST, OPTIONS</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>accept, authorization, origin</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportsCredentials</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

克斯菲尔特
com.thetransactioncompany.cors.CORSFilter
金鸡儿
*
cors.supportedMethods
获取、发布、选择
cors.supportedHeaders
接受、授权、来源
cors.supportsCredentials
真的
克斯菲尔特
/*
if(method.equals(GeneralEnums.HttpMethodType.OPTIONS.toString())){ 抛出新的WebApplicationException(Status.OK); }

在ContainerRequestFilter中添加上述行。它就像一个符咒

再看看这个链接

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    <init-param>
        <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedMethods</param-name>
        <param-value>GET, POST, OPTIONS</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>accept, authorization, origin</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportsCredentials</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>