Java Jersey 1.8,添加CORS过滤器不起作用
Java Jersey 1.8, adding CORS Filter does not work
我正在尝试将 CORS 过滤器添加到我的 Jersey 1.8 Web 服务中。
@ApplicationPath("/")
public class RESTConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> set = new HashSet<>();
set.add(CORSFilter.class);
set.add(super.getClass());
return super.getClasses(); //To change body of generated methods, choose Tools | Templates.
}
}
这是我的CORSFilter从这里():
@Provider
public class CORSFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest request,
ContainerResponse response) {
response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
response.getHttpHeaders().add("Access-Control-Allow-Headers",
"origin, content-type, accept, authorization");
response.getHttpHeaders().add("Access-Control-Allow-Credentials", "true");
response.getHttpHeaders().add("Access-Control-Allow-Methods",
"GET, POST, PUT, DELETE, OPTIONS, HEAD");
return response;
}
}
我仍然从我的Javascript-WebApp收到CORS错误。查看网络流量,未发送 CORS 标头。我在这里错过了什么?
您的RESTConfig
不正确
@ApplicationPath("/")
public class RESTConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> set = new HashSet<>();
set.add(CORSFilter.class);
// wrong
//set.add(super.getClass());
//return super.getClasses();
// corrected
set.addAll(super.getClasses());
return set;
}
}
此外,如果您重写getClasses()
方法,则不仅应该在其中添加过滤器,还应该添加所有 REST 资源
set.add(MyHelloWorldResource.class);
set.add(AnotherResource.class);
作为替代方法,您可以扩展 Jerseys ResourceConfig
类,在这种情况下,您可以指定要扫描的整个包以查找资源和过滤器。
public class RESTConfig extends ResourceConfig {
public RESTConfig() {
// scan the whole package and register all appropriate classes
packages("org.foo.rest;org.bar.rest");
// register single class
register(CORSFilter.class);
}
}
有关更多信息,请参阅泽西岛文档
谢谢大家。 尽管我对泽西1号了解了很多,但它并没有那样工作。 最终,我最终只是简单地将这个Tomcat 8有效过滤器添加到我的网站上.xml
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
相关文章:
- 为什么我的d3.jsselectAll+过滤器没有过滤
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- CORS-重定向到第二个GET正在接收的页面
- Angular-表的多列过滤器
- node.js请求数据事件未在CORS ajax调用中触发
- 如何“;过滤器”;或者以其他方式重构该数据
- 带有凭据的角度文件上载(CORS)不起作用
- 与域在同一台计算机上运行的NODEJS服务器的CORS错误
- Angularjs通过过滤器获取indexOf
- SmartGWT数据源和CORS
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- 使用按钮的Angular UI网格过滤器
- CORS-服务器端cookie没有保存在chrome浏览器上
- KendoUI网格行过滤器,带有布尔值下拉列表
- 如何在angular.js中动态应用自定义过滤器
- CORS:否'访问控制允许来源'header-但是php设置头文件
- CORS:访问控制允许原点不等于提供的原点
- CORS保持在SecurityError上:操作不安全
- CORS 过滤器错误 - 需要帮助来修复相同的错误
- Java Jersey 1.8,添加CORS过滤器不起作用