gpt4 book ai didi

java - 如何在java中的服务器端代码上启用CORS

转载 作者:行者123 更新时间:2023-12-03 02:07:31 28 4
gpt4 key购买 nike

我们遇到的情况是,UI 在一台主机上运行,​​并且它正在尝试与另一台主机上的可用资源进行通信。这里的问题是,UI 无法调用资源,因为该资源位于不同的域中,除非服务器启用了 CORS,否则跨域请求将无法工作。

为了启用服务器 CORS,我们进行了以下更改。

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.ext.Provider;
import java.io.IOException;

@Provider
public class CORSFilter implements ContainerResponseFilter {

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

但是我无法弄清楚我需要在哪里映射/配置此类,因为没有配置文件(web.xml)。我对在服务器端启用 CORS 没有太多了解。请建议如何进一步进行。

最佳答案

就我而言,以下内容正在工作

response.getHeaders().add("Access-Control-Allow-Origin", "*");
response.getHeaders().add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
response.getHeaders().add("Access-Control-Allow-Credentials", "true");
response.getHeaders().add("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS,HEAD");

编辑:(适用于 spring cloud netflix 以及其他)

@Component
public class HeadersFilter implements Filter {
@Override
public void init(FilterConfig fc) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain fc) throws IOException, ServletException {
if(servletResponse instanceof HttpServletResponse){
HttpServletResponse response = (HttpServletResponse) servletResponse;
// here add the headers
}
fc.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}

关于java - 如何在java中的服务器端代码上启用CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44905898/

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