gpt4 book ai didi

tomcat - 与tomcat服务器的跨源资源共享

转载 作者:行者123 更新时间:2023-11-28 23:44:29 25 4
gpt4 key购买 nike

我想允许对我的服务器的跨源请求。我找到了以下过滤器代码:

public class CorsFilter implements Filter {
// For security reasons set this regex to an appropriate value
// example: ".*example\\.com"
private static final String ALLOWED_DOMAINS_REGEXP = ".*";

public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {

HttpServletRequest req = (HttpServletRequest) servletRequest;
HttpServletResponse resp = (HttpServletResponse) servletResponse;

String origin = req.getHeader("Origin");

if (origin != null && origin.matches(ALLOWED_DOMAINS_REGEXP)) {
System.out.println("CorsFilter:: origin matches, yey");
resp.addHeader("Access-Control-Allow-Origin", origin);

if ("options".equalsIgnoreCase(req.getMethod())) {

resp.setHeader("Allow", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS");
if (origin != null) {
String headers = req.getHeader("Access-Control-Request-Headers");
String method = req.getHeader("Access-Control-Request-Method");
resp.addHeader("Access-Control-Allow-Methods", method);
resp.addHeader("Access-Control-Allow-Headers", headers);
resp.setContentType("text/plain");
}
resp.getWriter().flush();
return;
}
}

// Fix ios6 caching post requests
if ("post".equalsIgnoreCase(req.getMethod())) {
resp.addHeader("Cache-Control", "no-cache");
}

if (filterChain != null) {
filterChain.doFilter(req, resp);
}
}

@Override public void destroy() {}
@Override public void init(FilterConfig arg0) throws ServletException {}
}

似乎只有在第一个 OPTIONS 请求出现时它才会执行任何操作。但是,在我的例子中,我没有看到任何 OPTIONS 请求,只有 GET 请求。我错过了什么吗?解决方案是什么?

最佳答案

从 Tomcat 7.0.41 开始,您可以通过 built-in filter 控制 CORS 行为.

几乎您唯一需要做的就是编辑 CATALINA_HOME/conf 中的全局 web.xml 并添加过滤器定义:

     <!-- ================== Built In Filter Definitions ===================== -->      ...     <filter>       <filter-name>CorsFilter</filter-name>       <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>     </filter>     <filter-mapping>       <filter-name>CorsFilter</filter-name>       <url-pattern>/*</url-pattern>     </filter-mapping>    <!-- ==================== Built In Filter Mappings ====================== -->

关于tomcat - 与tomcat服务器的跨源资源共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15910554/

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