javascript知识巩固------ajax和跨域

手写XMLHttpRequest发送一个请求
//GET请求
function get(url,callback){
    const xhr = new XMLHttpRequest(); 
    xhr.open('GET',url,true)//true代表是异步的请求
    xhr.onreadystatechange = function(){
        if(xhr.readyState === 4 && xhr.status === 200 || xhr.status === 304){
            callback(response)
        }
    }
    xhr.send()
}

//POST请求
function post(url,data,callback){
    const xhr = new XMLHttpRequest()
    xhr.open('POST',url,true)
    xhr.setRequestHeader('Content-Type':"application/x-www-form-urlencoded")
    xhr.onreadystatechange = function(){
        if(xhr.readyState === 4 && xhr.status === 200 || xhr.status === 304){
            callback(response)
        }
    }
    xhr.send()
}
跨域
  • 同源策略:ajax请求时,浏览器要求当前网页和server端必须同源(安全)
  • 同源:协议、域名、端口,三者必须一致
  • 注意:加载图片、css和js可无视同源策略,这三者可以跨域(例如CDN地址的引入)。
    <img src=跨域的图片地址/>
    <link href=跨域的css地址/>
    <script src=跨域的js地址></script>
  • script标签可以实现JSONP
  • 注意:所有的跨域,都必须经过服务器端的允许和配合。未经服务器端允许就实现跨域,说明浏览器有漏洞或危险信号。
  • JSONP:script标签可以绕过跨域限制+服务器可以任意动态拼接数据返回
    用jQuery实现jsonp
	$.ajax({
		url:'',
		dataType:'jsonp',
		jsonpCallback:'callback',
		success:function(data){
			console.log(data)
		}
	})
  • CORS-服务端设置http header
	response.setHeader("Access-Control-Allow-Origin", "*");

注意:一般不建议使用通配符*,这里只是简单描述下所以暂时用*。

实现ajax的几种工具
  • jQuery
  • 进行fetch请求
	fetch(url)
		.then(function(response){
			return response.json()
		})
		.then(function(myJson){
			console.log(myJson)
		})
  • axios
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值