基于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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CORS跨域资源共享)是一种机制,允许服务器在响应中设置一些头信息,指示浏览器该服务器允许哪些跨域请求。以下是使用CORS解决跨域的基本步骤: 1. 服务器设置响应头:在服务器端,需要设置响应头来允许跨域请求。常见的响应头包括`Access-Control-Allow-Origin`、`Access-Control-Allow-Methods`、`Access-Control-Allow-Headers`等。 - `Access-Control-Allow-Origin`:指定允许访问的源,可以设置为特定的源或通配符`*`,表示允许任何源访问。 - `Access-Control-Allow-Methods`:指定允许的HTTP方法,如GET、POST等。 - `Access-Control-Allow-Headers`:指定允许的自定义请求头。 2. 浏览器发送预检请求(OPTIONS请求):对于某些复杂的跨域请求,浏览器会在实际请求之前发送一个预检请求,以确定服务器是否允许该跨域请求。预检请求使用HTTP方法OPTIONS,并包含一些额外的头信息,如`Access-Control-Request-Method`和`Access-Control-Request-Headers`。 3. 服务器响应预检请求:服务器接收到预检请求后,需要正确返回响应头以进行验证。响应中需要包含与实际请求相同的`Access-Control-Allow-Origin`、`Access-Control-Allow-Methods`和`Access-Control-Allow-Headers`等头信息。 4. 浏览器发送实际请求:如果预检请求通过验证,浏览器会继续发送实际请求。 需要注意的是,CORS是基于浏览器的同源策略来限制跨域请求的,因此只在浏览器环境中有效。对于非浏览器环境(如服务器间的请求),CORS并不适用。 此外,CORS并不能完全解决跨域问题,仍然有一些限制和安全考虑。例如,对于带有身份验证信息(

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Snovi-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值