gpt4 book ai didi

javascript - 访问 JAX-RS RESTful API

转载 作者:搜寻专家 更新时间:2023-11-01 03:49:20 24 4
gpt4 key购买 nike

我正在构建一个包含服务器和一些客户端的 RESTful 实现。服务器已启动并在云服务上运行。

当尝试通过 XMLHttpRequest 访问 Web 客户端上的 JavaScript 资源时,出现以下错误。

在 Chrome 上:

> XMLHttpRequest cannot load
> http://someserver.com/someresource.
> No 'Access-Control-Allow-Origin' header is present on the requested
> resource. Origin 'null' is therefore not allowed access.

在 Firefox 上:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://someserver.com/someresource. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

我看过其他推荐的答案

req.setRequestHeader("Access-Control-Allow-Origin", "*");

但我没有任何运气。

我想知道问题是否与需要在服务器端代码上完成的某些配置有关,以允许正确接收和处理调用。

你能帮我解决这个问题吗?

最佳答案

不是在请求对象上设置 header ,而是在服务器端的响应上设置它。

response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "GET, PUT, POST, OPTIONS, DELETE");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");
response.addHeader("Access-Control-Max-Age", "86400");

对于 Jax-RS:实现 ContainerResponseFilter

package com.xyz.package;

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 CORSFilter implements ContainerResponseFilter {

@Override
public void filter(final ContainerRequestContext requestContext,
final ContainerResponseContext crc) throws IOException {
crc.getHeaders().add("Access-Control-Allow-Origin", "*");
crc.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
crc.getHeaders().add("Access-Control-Allow-Credentials", "true");
crc.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
crc.getHeaders().add("Access-Control-Max-Age", "1209600");
}

}

关于javascript - 访问 JAX-RS RESTful API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32731670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com