Jax-rs -jersey Cross Origin请求启用

伊吉特·奥兹德米尔

我正在尝试使用2.X版本制作我的第一个jersey休息api,但是我对CORS有问题。

在配置文件之前,这是我的curl输出:

 curl -i http://localhost:8080/camp/rest/user/register
 HTTP/1.1 200 OK
 Server: Apache-Coyote/1.1
 Content-Type: application/json
 Content-Length: 32
 Date: Sat, 07 Feb 2015 15:34:28 GMT

从浏览器我可以得到正确的输出,这没有问题。但是我无法通过tomcat服务器启用cors。

这是我的web.xml

         <?xml version="1.0" encoding="UTF-8"?>
         <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
        <display-name>camp</display-name>
         <servlet>
         <servlet-name>camp</servlet-name>
        <servlet-class>
                 org.glassfish.jersey.servlet.ServletContainer
        </servlet-class>

        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.yigit.camp.api.out</param-value>
        </init-param>

        <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.yigit.camp.api.security</param-value>
        </init-param>

        <init-param>
            <param-name>org.glassfish.jersey.container.ContainerResponseFilters</param-name>
            <param-value>com.yigit.camp.api.security.CORSResponseFilter</param-value>
        </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>camp</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

<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>
  <init-param>
      <param-name>cors.allowed.methods</param-name>
      <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
  </init-param>
  <init-param>
      <param-name>cors.allowed.headers</param-name>
      <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

这是我的Filter类:

package com.yigit.camp.api.security;
import javax.ws.rs.ext.Provider;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;

@Provider
public class CORSResponseFilter implements ContainerResponseFilter {

@Override
public void filter(ContainerRequestContext creq, ContainerResponseContext cres) {
    cres.getHeaders().add("Access-Control-Allow-Origin", "");
    cres.getHeaders().add("Access-Control-Allow-Headers", "");
    cres.getHeaders().add("Access-Control-Allow-Credentials", "");
    cres.getHeaders().add("Access-Control-Allow-Methods", "");
    cres.getHeaders().add("Access-Control-Max-Age", "");
}

}

我也对tomcats web.xml进行了相同的配置,但是结果是相同的。

解决这个问题的正确方法是什么?

问候家伙

安托格娃

将此添加到您的web.xml中:

<init-param>
    <param-name>javax.ws.rs.Application</param-name>
    <param-value>com.yigit.camp.api.MyAppConfig</param-value>
</init-param>

然后添加此类:

package com.yigit.camp.api;
public class MyAppConfig extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        final Set<Class<?>> classes = new HashSet<Class<?>>();        
        classes.add(CORSResponseFilter.class);        
        return classes;
    }
}

现在应该使用您的响应过滤器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Jersey / JAX-RS ExceptionMappers和继承

来自分类Dev

JAX-RS(Jersey),Bean验证,@ JsonIgnore

来自分类Dev

在Jersey Jax-rs Web服务上启用OAuth1支持

来自分类Dev

如何使用Jersey(JAX-RS 2.0)客户端为内容编码启用gzip压缩?

来自分类Dev

在Jersey Jax-rs Web服务上启用OAuth1支持

来自分类Dev

Ember POST请求在JAX-RS中以XML jersey响应进行响应

来自分类Dev

带有Jersey&Grizzly的JAX-RS:500个请求的所有请求均失败

来自分类Dev

什么时候需要在web.xml中包含Jersey ServletContainer来启用JAX-RS?

来自分类Dev

Jersey JAX RS错误-找不到提供程序类

来自分类Dev

Jersey / JAX-RS资源方法输入Bean验证

来自分类Dev

如何在JAX-RS(Jersey)中读取cookie

来自分类常见问题

Jersey和jax-rs有什么区别

来自分类Dev

Jersey / JAX-RS:以XML / JSON格式返回地图

来自分类Dev

jax-rs Jersey @Post响应实体为空

来自分类Dev

带有Jersey / JAX-RS Restful服务的AJAX JSONP

来自分类Dev

Jersey JAX RS错误-找不到提供程序类

来自分类Dev

JAX-RS Jersey - Web 服务资源合作

来自分类Dev

JAX-RS Multipart 与 com.sun.jersey

来自分类Dev

JAX-RS Jersey REST api 调用映射

来自分类Dev

使用Jersey Jersey JAX RS.WS获取Java中的当前Web文件夹

来自分类Dev

如何将HornetQ消息代理与RESTful服务JAX-RS Jersey连接

来自分类Dev

在Java Jersey 2 JAX-RS中初始化单例

来自分类Dev

Websphere 8中的JAX-RS Jersey 2.10支持

来自分类Dev

Java RestFull Web服务:带有Jersey 2.3.1库的JAX-RS实现

来自分类Dev

JAX-RS / Jersey资源路径会继承继承吗?

来自分类Dev

使用Jersey和JAX-RS上传POST时,换行符会丢失

来自分类Dev

为什么Jersey / JAX-RS客户端无法处理泛型?

来自分类Dev

将Google原始缓冲区与Jersey / JAX-RS结合

来自分类Dev

在IntelliJ / Tomcat上使用带有Jersey的Java(JAX-RS)运行REST

Related 相关文章

  1. 1

    Jersey / JAX-RS ExceptionMappers和继承

  2. 2

    JAX-RS(Jersey),Bean验证,@ JsonIgnore

  3. 3

    在Jersey Jax-rs Web服务上启用OAuth1支持

  4. 4

    如何使用Jersey(JAX-RS 2.0)客户端为内容编码启用gzip压缩?

  5. 5

    在Jersey Jax-rs Web服务上启用OAuth1支持

  6. 6

    Ember POST请求在JAX-RS中以XML jersey响应进行响应

  7. 7

    带有Jersey&Grizzly的JAX-RS:500个请求的所有请求均失败

  8. 8

    什么时候需要在web.xml中包含Jersey ServletContainer来启用JAX-RS?

  9. 9

    Jersey JAX RS错误-找不到提供程序类

  10. 10

    Jersey / JAX-RS资源方法输入Bean验证

  11. 11

    如何在JAX-RS(Jersey)中读取cookie

  12. 12

    Jersey和jax-rs有什么区别

  13. 13

    Jersey / JAX-RS:以XML / JSON格式返回地图

  14. 14

    jax-rs Jersey @Post响应实体为空

  15. 15

    带有Jersey / JAX-RS Restful服务的AJAX JSONP

  16. 16

    Jersey JAX RS错误-找不到提供程序类

  17. 17

    JAX-RS Jersey - Web 服务资源合作

  18. 18

    JAX-RS Multipart 与 com.sun.jersey

  19. 19

    JAX-RS Jersey REST api 调用映射

  20. 20

    使用Jersey Jersey JAX RS.WS获取Java中的当前Web文件夹

  21. 21

    如何将HornetQ消息代理与RESTful服务JAX-RS Jersey连接

  22. 22

    在Java Jersey 2 JAX-RS中初始化单例

  23. 23

    Websphere 8中的JAX-RS Jersey 2.10支持

  24. 24

    Java RestFull Web服务:带有Jersey 2.3.1库的JAX-RS实现

  25. 25

    JAX-RS / Jersey资源路径会继承继承吗?

  26. 26

    使用Jersey和JAX-RS上传POST时,换行符会丢失

  27. 27

    为什么Jersey / JAX-RS客户端无法处理泛型?

  28. 28

    将Google原始缓冲区与Jersey / JAX-RS结合

  29. 29

    在IntelliJ / Tomcat上使用带有Jersey的Java(JAX-RS)运行REST

热门标签

归档