我正在尝试使用带有基本身份验证的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一起工作? 如何继续?
答案 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>
祝你好运!