同源策略?跨域?

本文详细介绍了浏览器的同源策略,解释了其如何防止数据滥用并保障网络安全。此外,还探讨了跨域的概念及其实现方式,并提供了具体的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同源策略?跨域?

同源、不同源

协议、域名、端口号都一样则同源,如果三者有一个不一样则属于不同源。

什么是浏览器的同源策略?

同源策略是Browser层面的一个保护措施,限制对不同源数据的使用,避免产生安全问题。

  • 这里Browser对于不同源的Server发出了请求,但是拒绝了Server响应的数据。

什么是跨域?

浏览器每次请求前必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨源请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 CookiesHTTP 认证 相关数据)。跨域就是无视Browser的这个限制,Browser可以使用不同源的数据。

举个例子:

你去肯德基店让店员帮你买碗兰州拉面,店员打电话给拉面馆点了一份兰州拉面,面送到以后,店员给拦住了拒绝让你使用。

这个场景下:

店员:浏览器

拉面馆:服务器

兰州拉面:请求的数据

这里浏览器请求了服务器,但是对于请求的数据,浏览器拒绝使用用。

跨域问题产生的流程:

Browser回检测哪些请求需要被预检,会发送一个使用OPTIONS方法的遇见请求,OPTIONS 是 HTTP/1.1 协议中定义的方法,用于从Server获取更多的信息,该方法不会对Server的资源产生影响。预检请求中同时携带了下面两个首部字段:

  • Access-Control-Request-Method: POST
  • Access-Control-Request-Headers: X-PINGOTHER, Content-Type

第一个字段告诉Server,实际请求的是POST方法,第二个字段告诉浏览器实际请求将携带两个请求首部字段。Server据此决定,该请求是否被允许。

解决方法:

在响应头中添加字段Access-Control-Allow-Origin,告知Browser该资源可以被哪些域访问。

Access-Control-Allow-Origin: https://foo.example

Access-Control-Allow-Origin: *

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值