基于CORS解决跨域请求

跨域的概念

首先,什么是跨域?

跨域指的是,当一个网站向另一个非同源网站发送请求时,出于安全原因,浏览器限制从脚本(javascript)内发起的跨源HTTP请求。

所谓同源指的是,协议,域名,端口均相同。举个栗子:

http://localhost/index.html  访问  http://localhost/findOne.do (非跨域)

http://localhost:8080/index.html 访问 http://localhost/findOne.do (跨域,端口号不同)

http://localhost/index.html 访问 https://localhost/findOne.do (跨域,协议不同)

http://localhost/index.html 访问 http://127.0.0.1/findOne.do (跨域,域名不同)

当前流行的跨域解决方法有两种,一种是发送jsonp格式的请求,另一种就是基于cors解决跨域资源共享问题

CORS解决跨域请求

CORS将请求分为两种,一种为简单请求,另一种为预检请求(这里可以理解为复杂请求)。

简单请求和复杂请求的区别在于,是否在请求头(heads)添加了自定义字段。

对于简单请求,只需要在服务器端接口添加  response.addHeader("Access-Control-Allow-Origin","*")

/**
 * Cors跨域请求演示
 * @author:LiChong
 * @date:2018/7/26
 */
@RestController
@RequestMapping("/cors")
public class CorsController {

	@PostMapping("/demo")
	public void demo(HttpServletResponse response){
		response.addHeader("Access-Control-Allow-Origin","*");//这里指允许任何的跨域请求
		//response.addHeader("Access-Control-Allow-Origin","www.lichong.com");//只允许来自www.lichong.com的跨域请求
	}
}

对于复杂请求,我这里暂没有遇到这里的需求,以后遇到了再补充;

参考网站:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

猜你喜欢

转载自blog.csdn.net/weixin_40929150/article/details/81214876