同源策略以及解决方法

同源策略是浏览器安全措施,限制了不同源之间的DOM交互、Cookie、IndexDB和LocalStorage的访问以及XMLHttpRequest请求。解决跨域问题的方法包括JSONP、CORS和反向代理。JSONP仅支持GET请求且安全性较低,CORS则分为简单和非简单请求,涉及预检请求机制。反向代理利用服务器间无同源策略特性实现跨域。

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

同源策略:浏览器为了保证用户信息操作安全,所做的一些限制,如果协议,主机,端口号有任意一个不同浏览器将开启同源策略,同源策略使得客户端虽然接受到了服务端传来的响应,但是浏览器限制了它读取和修改不同源的dom,访问不同源的cookie,IndexDB 和 LocalStorage,限制XMLHttpRequest 请求

解决策略:利用JSONP,cros,反向代理

JSONP:首先在前端 代码中写入一个用于执行服务端返回来的回调函数,然后再script标签中的src写入要访问的地址并且携带回调函数的一系列参数,服务端那边根据请求的url和回调函数,生成一个携带信息的js代码片段返回给前端,然后前端再通过回调函数去处理收到的数据,z这个流程就相当于洗钱,script是漏洞,回调函数就洗钱机构,服务端那边给的不能直接使用,但是可以通过script标签这个漏洞,把想要发送的信息发给回调函数,回调函数洗白了,客户端又可以用了

缺点:只能发get请求,参数会暴露在页面不安全,服务端那边要设置支持jsonp,返回的数据无法进行错误处理

Cros:分为简单请求和非简单请求

简单请求:请求方法只能是get,post,head一种,然后请求头三个取值范围是限定的

简单请求的过程:首先客户端会在发送的请求头部添加origin说明那个源,然后服务器端收到会去在回应的时候添加access-control-allow-origin字段,如果客户端请求的源不在允许的范围,那么响应将会被浏览器拦截,同时还可以设置一些其他的比如允许cookie的放送什么

非简单请求:

不同于简单请求的是多了一个发送预检请求,请求包括两个方面,请求方法和cors需请求头字段,然后服务器端响应预检响应,如果预检不满足响应的几个字段,那么cors请求将不会被发送,如果满足此时将重复简单请求的步骤

反向代理:利用服务器与服务器不存在同源策略的特点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值