Chi*_*iIT 24 java rest jax-rs jax-ws cors
我有一个RESTful webservice,它将返回字符串,它是用Java(JAX-WS)编写的.我的问题是当我使用以下URL向该webservice发送请求时:
http://localhost:8080/project/webservices/getlist/getListCustomers
在控制台中,它给出了以下错误消息:
XMLHttpRequest无法加载url Access-Control-Allow-Origin不允许使用origin localhost
我该如何处理这个问题?
Java代码:
@GET
@Path("/getsample")
public Response getMsg() {
String output = "Jersey say : " ;
return Response.status(200).entity(output).build();
}
Run Code Online (Sandbox Code Playgroud)
fly*_*yer 40
在这里阅读有关您的问题CORS:http://enable-cors.org/
检查这个是否可以帮助您使用getMsg()方法: return Response.ok(output).header("Access-Control-Allow-Origin", "*").build();
如果上述方法无效,请尝试将Jersey过滤器添加到您的服务中.创建过滤器类:
package your.package;
public class CORSFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest creq, ContainerResponse cresp) {
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Origin", "*");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Credentials", "true");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS, HEAD");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
return cresp;
}
}
Run Code Online (Sandbox Code Playgroud)
并在以后注册win web.xml:
<servlet>
<servlet-name>CORS Filter</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>your.package.CORSFilter</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>CORS Filter</servlet-name>
<url-pattern>/webservices/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
OPTIONS
浏览器.把它放在你拥有@GET的班级里.
@OPTIONS
@Path("/getsample")
public Response getOptions() {
return Response.ok()
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "POST, GET, PUT, UPDATE, OPTIONS")
.header("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With").build();
}
Run Code Online (Sandbox Code Playgroud)
"*"
提供的"Access-Control-Allow-Origin"标头与您访问此资源的自定义域进行交换.Ig如果你http://localhost::8080
用这样的东西("Access-Control-Allow-Origin", "http://localhost:8080")
而不是星号来调用它"*"
.
归档时间: |
|
查看次数: |
80637 次 |
最近记录: |