如何在Java RESTful Web服务中添加“Access Control Allow Origin”头?

如何在Java RESTful Web服务中添加“Access Control Allow Origin”头?,java,web-services,rest,Java,Web Services,Rest,我创建了一个java RESTful web服务,它在localhost中运行良好。但是,当我在服务器上部署它之后尝试在Dev环境中测试它时,它会抛出以下错误: 无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许“源”访问 我知道我需要为资源(即web服务)设置一些头,以便从特定域访问,但我不确定如何实现这一点。我不知道我在这里是否有意义,因为我是开发web服务的新手。下面是web服务的以下代码 package c

我创建了一个java RESTful web服务,它在localhost中运行良好。但是,当我在服务器上部署它之后尝试在Dev环境中测试它时,它会抛出以下错误:

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许“源”访问

我知道我需要为资源(即web服务)设置一些头,以便从特定域访问,但我不确定如何实现这一点。我不知道我在这里是否有意义,因为我是开发web服务的新手。下面是web服务的以下代码

package com.eviac.blog.restws;
import java.util.ArrayList;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

// @Path here defines class level path. Identifies the URI path that 
// a resource class will serve requests for.
@Path("UserInfoService")
public class UserInfo {
private static final String plain = null;
// @GET here defines, this method will method will process HTTP GET requests.
@GET
// @Path here defines method level path. Identifies the URI path that a
// resource class method will serve requests for.
@Path("/name/{i}")
// @Produces here defines the media type(s) that the methods
// of a resource class can produce.
@Produces(MediaType.TEXT_XML)
// @PathParam injects the value of URI parameter that defined in @Path
// expression, into the method.
    public String userName(@PathParam("i") String i) {
    String name = i;
    return "<User>" + "<Name>" + name + "</Name>" + "</User>";
    }

@GET 
@Path("/age/{j}") 
@Produces(MediaType.TEXT_XML)
    public String userAge(@PathParam("j") int j) {

    int age = j;
    return "<User>" + "<Age>" + age + "</Age>" + "</User>";
    }

@GET 
@Path("/NLP/{k}")

@Produces(MediaType.TEXT_XML)
    public String nlpPOS(@PathParam("k") String k) {

    String description = k;
    POSTagger obj = new POSTagger();
    ArrayList<String> list = obj.tagging(description);

    String[] result = list.toArray(new String[list.size()]);

    String resultXML = "<result>";
        for (String s : result) {
            resultXML = resultXML + "<noun>" + s + "</noun>"; 
        }
        resultXML = resultXML + "</result>";

        return resultXML;
    }
}
我只使用nlpPOS方法。我还有另一个类,它包含用于执行web服务的标记方法。有人能帮我在这段代码中设置标题吗

非常感谢您的帮助

谢谢!!
Chiranjit

您使用的JAX-RS实现和版本是什么?CORS是通过HTTP头处理的,所以无论您以何种方式操作HTTP头都是有效的。示例:服务器可能内置的简单筛选器。例如,Tomcat有:@peeskillet:版本是1.17.1。顺便说一句,你说的JAX-RS实现是什么意思?@Gimby:谢谢你的回复。我们已经在Weblogic server中部署了web服务,您对Weblogic有什么想法吗?嗨,Gimby,在网上搜索之后,我能够使用filter类放置标题,但是出现了以下错误:Servlet.service for Servlet[Jersey REST service]在上下文中,路径为[/RESTfulWS]抛出异常[Servlet执行抛出异常]带有根本原因java.lang.AbstractMethodError:javax.ws.rs.core.UriBuilder.uriLjava/lang/String;Ljavax/ws/rs/core/UriBuilder;如果这个版本有问题,你能帮我找出要用哪个罐子吗?谢谢