JAX-RS的CORS问题,即使在启用它之后

时间:2017-05-28 07:20:33

标签: java servlets jersey cors jax-rs

我在Eclipse中有一个Maven项目,我在后端使用JAX-RS。 抛出代码,一切正常(我使用Postman测试响应并发送请求)。当我尝试从javascript(使用jQuery)调用GET / POST请求时出现问题。我在chrome控制台中收到此CORS错误:

  

仅支持协议方案的交叉原始请求:http,数据,chrome,chrome-extension,https。

我在 this page的帮助下启用了CORS,即使这样做了,我仍然遇到了这个问题。

根据说明,我添加了这个课程:

package org.decept.hunter.thefbcrawler;
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.ext.Provider;

@Provider
public class CORSHandler implements ContainerResponseFilter {

@Override
public void filter(ContainerRequestContext creq, ContainerResponseContext cres) throws IOException {
    // TODO Auto-generated method stub
    cres.getHeaders().add("Access-Control-Allow-Origin", "*");
    cres.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
    cres.getHeaders().add("Access-Control-Allow-Credentials", "true");
    cres.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
    //cres.getHeaders().add("Access-Control-Max-Age", "1209600");
    //return cres;
}

}

我还改变了web.xml:

 <servlet>  
 <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>
        org.glassfish.jersey.servlet.ServletContainer
    </servlet-class>
    <init-param>
        <param-name>
            com.sun.jersey.spi.container.ContainerResponseFilters
        </param-name>
        <param-value>
            mypackagename.CORSHandler
        </param-value>
        </init-param>
        <init-param>
            <param-name>
                jersey.config.server.provider.packages
            </param-name>
            <param-value>mypackagename</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/webapi/*</url-pattern>
</servlet-mapping>`

我在Eclipse自身的Apache Tomcat(7)Web服务器上运行该项目。

0 个答案:

没有答案