通信类

博客围绕前后端通信展开,介绍了同源策略及其限制,如Cookie等无法读取、DOM无法获取、AJAX请求不能发送。还阐述了前后端通信方式,包括Ajax、WebSocket、CORS等,以及创建Ajax的流程和跨域通信的几种方式,如JSONP、postMessage等。

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

通信类

什么时同源策略及限制

同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制
限制:
Cookie、localStorage和IndexDB无法读取
DOM无法获取
AJAX请求不能发送

前后端如何通信

  1. Ajax
  2. WebSocket
  3. CORS

如何创建Ajax

  • XMLHttpRequqest对象的工作流程
  • 兼容性处理
  • 事件的触发条件
  • 事件的触发顺序
util.json = function(options){
	var opt = {
		url:'',
		type:'get',
		data:{},
		success:function(){},
		error:function(){}
	}
	util.extend(opt,options)
	if(opt.url){
		var xhr = XMLHttpRequest ? new XMLHttpRequest() : new window.ActiveXObject('Microsoft')
		var data = opt.data,url = opt.url,type = opt.type.toUpperCase(),dataArr = []
		for(var k in data){
			dataArr.push(k+'='+data[k])
		}
		if(type=='GET'){
			url = url+'?'+dataArr.join('&')
			xhr.open(type,url.replace(/\?$/g,''),true);
			xhr.send()
		}
		if(type=='POST'){
			xhr.open(type,url,true);
			xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded')
			xhr.send(dataArr.join('&'))
			
		}
		xhr.onload = function(){
			if(xhr.status==200||xhr.status===304){
				var res;
				if(opt.sucess&&opt.success instanceof Function){
					res = xhr.responseText;
					if(typeof res=='string'){
						res = JSON.parse(res)
						opt.success.call(xhr,res)
					}
				}else{
					if(opt.error&&opt.error instanceof Function){
						opt.error.call(xhr.res)
					}
				}
			}
		}
	}
}

跨域通信的几种方式

  • JSONP
  • Hash (hash改变页面不刷新)
  • postMessage(h5新增加的跨域通信)
  • WebSocket(不受同源策略限制)
  • CORS(支持跨域通信的Ajax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值