跨域监听 iframe src_跨域的几种实现方式|精选博客

本文介绍了同源策略及其在跨域问题中的应用,详细阐述了JSONP、CORS、降域等解决跨域问题的方法,并探讨了postMessage和服务端中转的策略。通过实例代码解析了各种方法的实现步骤,帮助开发者更好地理解和应对跨域挑战。

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

一、背景

同源策略

同源策略可以理解为浏览器的一种安全机制,浏览器只允许与本域下的接口进行交互。不同源的客户端在没有明确授权的情况下,不能读写服务端的资源。

什么是不同源呢:

  • 不同的协议 例:http/https

  • 不同的域名

  • 不同的端口

  • 不同的二级域名 例:http://a.baidu.com、http://b.baidu.com(不然哪来的降域呢)

补充点

在出现跨域问题时,浏览器究竟在哪一步进行了拦截?客户端请求时?服务器不做出响应?还是服务器响应后浏览器拒绝的响应??

135b037bf1125060ce0e040a92afdd64.png

image.png

7f0e1816e69198e4b7aa8db6a397de3e.png

image.png

测试发现,在客户端和服务端不同源的情况下,服务端其实是有响应的,在此时是浏览器的同源策略拒绝了响应,认为这样不安全。

二、解决跨域问题

1. JSONP(JSON with Padding)

  • 原理: 在HTML中用script标签在加载其他域下的js,那么JSON就是利用这一特性来请求服务端,从而避免了ajax请求出现的跨域问题

  • 具体实施

(1) 定义数据处理函数_fun

(2) 创建script标签,并添加src地址来请求服务端接口,在src尾端加上自定义参数callback=_fun

(3) 服务端收到请求后,根据get参数判断返回拼接的字符串:'_fun(data)'

(4) fun(data)会放到script标签作为js执行,那么此时就会调用fun函数,将data作为函数的参数

  • 相应代码

客户端:

获取天气<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值