如何使用基本身份验证在Jersey REST中使用CORS过滤器?

时间:2016-04-05 22:31:19

标签: java tomcat jersey cors basic-authentication

我正在尝试使用带有基本身份验证的Tomcat在Jersey上实现cors。 使用领域配置身份验证,该领域获取数据库的数据并与给定用户进行比较并传递。

我的所有资源都在没有跨源HTTP请求的情况下正常工作,我已经使用Soapui和我自己制作的Android应用程序进行了测试。 当我尝试使用jQuery和ajax使用REST Web服务时,问题就出现了,它发送了一个没有任何身份验证数据的Options预检,并且服务器响应了401未经授权的错误。

我尝试过以下操作:

*实现自定义容器过滤器以处理该cors请求,而不执行任何操作。 使用网站http://enable-cors.org建议的catalina cors过滤器,什么都没有。

*使用由http://software.dzhuvinov.com/cors-filter.html开发的cors过滤器。什么都没有。

*使用servlet规范的过滤器,有和没有WebFilter注释,什么也没有。

*使用@PermitAll注释创建选项服务。

在所有这些尝试中,我也配置了web.xml。 我正在使用Tomcat 7.0.21,Jersey 2.22.2,Hibernate,MYSQL,JDK 7和Maven。

我认为基本的auth是问题,也许我应该尝试OAuth 2.0?有没有办法让cors与Basic Auth一起工作? 如何继续?

1 个答案:

答案 0 :(得分:0)

对我有用的最简单方法是执行以下操作:

1)将此代码添加到<web-app .. >标记内部顶部附近的 web.xml

 <filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
</filter>
<filter-mapping>
        <filter-name>CORS</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

2)通过 pom.xml

中的 maven 导入两个库
<dependency>
    <groupId>com.thetransactioncompany</groupId>
    <artifactId>java-property-utils</artifactId>
    <version>1.9.1</version>
</dependency>

<dependency>
    <groupId>com.thetransactioncompany</groupId>
    <artifactId>cors-filter</artifactId>
    <version>1.9.1</version>
</dependency>
祝你好运!