Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为跨源REST调用JAX-RS添加头_Java_Rest_Http_Cross Domain - Fatal编程技术网

Java 为跨源REST调用JAX-RS添加头

Java 为跨源REST调用JAX-RS添加头,java,rest,http,cross-domain,Java,Rest,Http,Cross Domain,我的API需要跨源REST调用支持。现在我有这样的东西 @OPTIONS public Response options() { return Response.ok() .header("Access-Control-Allow-Origin", "*") .header("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept")

我的API需要跨源REST调用支持。现在我有这样的东西

@OPTIONS
public Response options() {
     return Response.ok()
           .header("Access-Control-Allow-Origin", "*")
           .header("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept")
           .header("Access-Control-Allow-Methods", "GET")
                .build();
 }

@GET
@Path("/algorithms")
@Produces("application/json")
public Response getAllAlgorithms() {
    List<MLAlgorithm> mlAlgorithms = MLCoreServiceValueHolder.getInstance().getAlgorithms();
    return Response.ok(mlAlgorithms).build();
}
前两个标头未在响应标头中设置。我需要类中所有API的跨源支持。我如何实现这一点,以及当前实现中的问题是什么


[1]

与其尝试在资源方法中添加CORS支持,不如使用过滤器。资源方法策略的问题在于,您需要为每个端点位置使用相同的方法。如果向
/api/config
发出请求,则该端点还必须具有处理预飞行的选项方法。与所有其他端点相同。所以最好把它放在一个可以处理所有请求的过滤器中


您可以在

中看到一个示例(适用于JAX-RS 2.0和Jersey 1.x),如果您看到的是这个示例,那么这三个头都没有设置。对我来说,这看起来像是标题的解释版本,因为在“访问控制允许方法”中,标题被转换为输出“允许:获取”。您是否尝试执行实际的API调用?我也使用了CURL。相同的输出您使用CURL做了什么:/Minimal responses没有帮助。这是我对API“CURL-X options”内容类型:application/json“-H”授权的CURL调用:Basic YWRtaW46YWRtaW4=“-v-k”,我得到了相同的响应头
Status Code: 200 OK
Allow: GET
Content-Length: 0
Date: Mon, 23 Nov 2015 12:17:39 GMT
Server: WSO2 Carbon Server