cors跨域设置

本文介绍了CORS跨域资源共享的原理和解决跨域问题的方法,包括简单请求和预检请求。详细讲解了Access-Control-Allow-*相关字段的含义,并提到了axios后端代理以及如何利用Koa的koa-server-http-proxy中间件进行代理设置,以规避浏览器的同源策略限制。
摘要由CSDN通过智能技术生成

CORS跨域设置

CORS(Cross-origin resource sharing),跨域资源共享,是一份浏览器技术的规范,用来避开浏览器的同源策略

简单来说就是解决跨域问题的除了jsonp外的另一种方法;比jsonp更加优雅。
在这里插入图片描述

    // 允许cors跨域;
    ctx.set("Access-Control-Allow-Origin", "http://localhost:3000");
    // 允许前端设置的头部信息;(请求头)
    ctx.set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Authorization,test");
    // 允许前端获取的头部信息;(响应头)
    ctx.set("Access-Control-Expose-Headers", "Content-Type, Content-Length,Date")
    // 允许前端请求的方法;
    ctx.set("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,HEAD,OPTIONS");
    // 允许携带凭证:cookie
    ctx.set("Access-Control-Allow-Credentials", true);
    // 设置预检请求的缓存时间
    ctx.set("Access-Control-Max-Age", 3600 * 24);
Java后端cors跨域设置白名单可以通过以下步骤实现: 1. 在web.xml文件中添加CorsFilter过滤器。 2. 在CorsFilter过滤器中设置允许跨域的域名白名单,可以使用通配符*表示允许所有域名跨域访问。 3. 在CorsFilter过滤器中设置允许跨域的请求方法,例如GET、POST等。 4. 在CorsFilter过滤器中设置允许跨域的请求头,例如Content-Type、Authorization等。 5. 在CorsFilter过滤器中设置允许跨域的响应头,例如Access-Control-Allow-Origin、Access-Control-Allow-Methods等。 具体实现可以参考以下代码: ``` public class CorsFilter implements Filter { private String allowOrigin; private String allowMethods; private String allowCredentials; private String allowHeaders; private String exposeHeaders; @Override public void init(FilterConfig filterConfig) throws ServletException { allowOrigin = filterConfig.getInitParameter("allowOrigin"); allowMethods = filterConfig.getInitParameter("allowMethods"); allowCredentials = filterConfig.getInitParameter("allowCredentials"); allowHeaders = filterConfig.getInitParameter("allowHeaders"); exposeHeaders = filterConfig.getInitParameter("exposeHeaders"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) servletResponse; HttpServletRequest request = (HttpServletRequest) servletRequest; if (StringUtils.isNotBlank(allowOrigin)) { response.setHeader("Access-Control-Allow-Origin", allowOrigin); } if (StringUtils.isNotBlank(allowMethods)) { response.setHeader("Access-Control-Allow-Methods", allowMethods); } if (StringUtils.isNotBlank(allowCredentials)) { response.setHeader("Access-Control-Allow-Credentials", allowCredentials); } if (StringUtils.isNotBlank(allowHeaders)) { response.setHeader("Access-Control-Allow-Headers", allowHeaders); } if (StringUtils.isNotBlank(exposeHeaders)) { response.setHeader("Access-Control-Expose-Headers", exposeHeaders); } filterChain.doFilter(request, response); } @Override public void destroy() { } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值