我正在尝试使用具有基本身份验证的 Tomcat 在 Jersey 上实现 cors。 身份验证是使用领域配置的,它获取数据库的数据并与给定的用户进行比较并通过。
我的所有资源都在没有跨源 HTTP 请求的情况下正常工作,我已经使用 Soapui 和我自己制作的 Android 应用程序进行了测试。 当我尝试使用 jQuery 和 ajax 使用 REST web 服务时出现问题,它发送一个没有任何身份验证数据的选项预检,并且服务器响应 401 未经授权的错误。
我已尝试执行以下操作:
*实现自定义容器过滤器来处理该 cors 请求,但什么也不做。 按照网站的建议使用 catalina cors 过滤器 http://enable-cors.org , 什么都没有。
*使用由以下人员开发的 cors 过滤器:http://software.dzhuvinov.com/cors-filter.html .什么都没有。
*使用servlet规范的过滤器,带和不带WebFilter注解,什么都不带。
*使用@PermitAll 注释创建选项服务。
在所有这些尝试中,我也配置了 web.xml。 我正在使用 Tomcat 7.0.21、Jersey 2.22.2、Hibernate、MYSQL、JDK 7 和 Maven。
我认为基本身份验证是问题所在,也许我应该尝试 OAuth 2.0?有没有办法让 cors 与 Basic Auth 一起工作? 如何进行?
最佳答案
对我来说最简单的方法是执行以下操作:
1) 将此代码添加到您的 web.xml 中,靠近 <web-app .. >
内部的顶部标签
<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>
祝你好运!
关于java - 如何使 CORS 过滤器在具有基本身份验证的 Jersey REST 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36438245/