在 Java 服务器端处理 CORS
Posted
技术标签:
【中文标题】在 Java 服务器端处理 CORS【英文标题】:Handle CORS in java server side 【发布时间】:2019-07-20 07:26:04 【问题描述】:我们有一些需要启用 CORS 的受保护资源。这些资源可以通过 get 和 post 获取/创建。
为了处理 CORS,我们将预检选项请求的处理放在服务器端。我们有一个特殊的标头要从客户端发送,这使它成为根据https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS 的预检请求
在接收到带有源头的选项请求时,我们允许使用“Access-Control-Allow-Origin”的源并设置“Access-Control-Allow-Credentials”、“true”。
我的问题是我需要做些什么,或者浏览器不发送预检选项请求的情况?
最好的问候,
苏拉夫
【问题讨论】:
【参考方案1】:来源:https://howtodoinjava.com/servlets/java-cors-filter-example/
public class CORSFilter implements Filter
public CORSFilter()
public void destroy()
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException
HttpServletRequest request = (HttpServletRequest) servletRequest;
System.out.println("CORSFilter HTTP Request: " + request.getMethod());
// Authorize (allow) all domains to consume the content
((HttpServletResponse) servletResponse).addHeader("Access-Control-Allow-Origin", "*");
((HttpServletResponse) servletResponse).addHeader("Access-Control-Allow-Methods","GET, OPTIONS, HEAD, PUT, POST");
HttpServletResponse resp = (HttpServletResponse) servletResponse;
// For HTTP OPTIONS verb/method reply with ACCEPTED status code -- per CORS handshake
if (request.getMethod().equals("OPTIONS"))
resp.setStatus(HttpServletResponse.SC_ACCEPTED);
return;
// pass the request along the filter chain
chain.doFilter(request, servletResponse);
public void init(FilterConfig fConfig) throws ServletException
【讨论】:
以上是关于在 Java 服务器端处理 CORS的主要内容,如果未能解决你的问题,请参考以下文章