我们遇到一种情况,UI在一台主机上运行,并且正尝试与另一台主机上可用的资源进行通信。这里的问题是,用户界面无法调用资源,因为该资源位于不同的域中,除非服务器启用了CORS,否则跨域请求将无法工作。如何在java中的服务器端代码上启用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没有太多的知识。 请建议如何进一步处理。
您使用的春天开机? –
您使用的是什么应用程序服务器?这应该不需要额外的配置。 – assylias
我们不使用Spring启动..我们使用的是netty服务器。 –