前端笔记2022-01-05

2022-01-05

跨域解决方案

一、JSONP解决跨域

JSONP是利用script中的src无跨域限制来实现,需要后端的支持,并且只能进行get请求。
1、动态创建一个script标签

let script = document.createElement('script);

2、设置script标签中的src属性,将要请求的地址以及回调函数赋值给src

script.src = 'http://www.xxx.com/home/callback=callbackName';
let callbackName = function(data) {
    // 获取到data
}

3、将script标签添加到dom中

document.body.appendChild(script);

4、后端服务器对请求的路由进行设置

router.get("/testAJAX" , function (req , res) {
		console.log("收到请求");
		var callback = req.query.callback;
        var data = {
            ......
		}
		res.send(callback+"("+JSON.stringify(data)+")");
	});

5、前端根据callback返回的callback+"("+JSON.stringify(data)+")" 自动执行该代码,相当于调用callbackName函数,从而获取到后端返回的data数据。

二、CORS解决跨域

CORS全称为“跨域资源共享”,允许浏览器向服务器发出XMLHttpRequest请求。浏览器对于简单请求和非简单请求有区别。
1、对于简单的请求,浏览器直接发起cors请求,会在请求头中添加一个Origin字段,表示该请求的来源。
2、服务器根据这个Origin的值判断是否允许同意这次请求。
3、cors的响应头字段Access-Control-Allow-Origin是必选字段,该字段设置为一个具体的源表示只有该源才可以同意跨域请求,如果该字段设置为一个“*”,那么表示任何源都可以进行跨域请求。

代码

1、实现sleep函数

sleep(1000).then( () => {
	console.log('hello)
})
function sleep(delay) {
	return new Promise( resolve => {
		setTimeout( resolve, delay)
	})
}

2、实现连续子数组的最大和
输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

var maxSubArray = function(nums) {
    let pre = 0, maxAns = nums[0];
    nums.forEach((x) => {
        pre = Math.max(pre + x, x);
        maxAns = Math.max(maxAns, pre);
    });
    return maxAns;
};

3、遍历DOM树,并且打印出每个节点的tagName

function traversalDom(element) {
	console.log(element.tagName);
	element = element.firstElementChild;
	while(element) {
		traversalDom(element)
		element = element.nextElementSibling;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值