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