以前学习写后台的时候,与前端沟通的时候,前端有一次反映过出现了跨域的问题(实际上没出现),这勾起了我对跨域这个东西的兴趣。由于以前在学校学前端的时候,有一次出现了跨域的问题,慌得不行,因此就决定上网冲浪研究一下跨域这个东西。前端
跨域指的是浏览器从一个域名的网页请求另外一个域名时,域名、端口、协议任一不一样,都是跨域。跨域
看了一下网上的资料,大概都是说,跨域问题的出现:主要是由于浏览器的同源策略。浏览器
同源机制是浏览器最核心也最基本的安全功能,若是缺乏了同源策略,浏览器很容易受到XSS、CSFR等攻击。安全
前端请求的url必须与浏览器的url处于同域,也就是它们二者的域名、端口、协议必须相同。bash
同源策略限制如下行为:ide
在网上看到很多关于跨域的解决方案,在这里讲以前后台大佬解决跨域问题的方案:学习
在服务端设置Access-Control-Allow-Origin HTTP响应头部以后,浏览器将会容许跨域请求。url
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods",
"POST, GET, OPTIONS, DELETE, PUT");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers",
"Content-Type, x-requested-with, X-Custom-Header, Authorization, token");
chain.doFilter(req, res);
}复制代码