同源策略和如何解决跨域

同源策略和跨域

  1. 同源策略:当发起一个http请求的时候,我们当前的网址和被请求的网址-协议,域名,端口必须一致,如果有一个不同就产生了非同源策略,也叫跨域。

  2. 同源策略的目的为了保护站带你资源的安全性。

  3. 同源策略只有浏览器有,其他软件,系统没有。

如何解决跨域

  1. jsonp

  • 原理:创建一个script标签,使用src属性请求,因为script不受同源策略的影响,所以可以实现跨域

  • 其他的

    1. img

    2. link、

    3. iframe

  1. 借助后端语言完成请求代理

  • java

  • php

  • nodejs

  1. vue项目中使用vue.config.js里面配置跨域

  • vue.config.js 是vue脚手架的配置文件

  • vue@cli 创建vue项目

  • vue脚手架底层是基于webpack封装的

  • webpack不是给浏览器用的,必须使用node.js来使用

  • node.js是把浏览器的内核抽离了出来,安装到电脑的全局环境中,让任何位置都可以允许js文件.nodejs是后端语言。

  • 代理请求的过程:vue.config.js=>nodejs[后端程序代理请求]

  1. cors跨域

  • 后端做了请求的白名单处理*

  • 只要前端的浏览器支持cors跨域就可以

封装自己的ajax

  1. 创建一个请求对象 var ajax =new XMLHttpRequest()

  2. 连接 ajax.open(method,url,sync)

  3. 发送请求:如果是post参数写在send里,如果是get参数拼接在url后面

   if(method==='post'){
      ajax.send(JSON.styingify(data))
  }else{
      ajax.send()
  }
​
 4. 监听响应
 ajax.onreadystatechange = function () {
          if (ajax.status === 200 && ajax.readyState === 4) {
            ajax.responseType = 'json' // 让ajax使用json方式格式化返回值
            resolve(ajax.response)
          }
        }
 5. 容错
  if (method === 'post') {
          ajax.setRequestHeader('content-type', 'application/json; charset=utf-8')
        }
​
        // 容错
        ajax.onerror = function () {
          reject(new Error('请求失败!'))
        }
      })
    }

axios

  • 目前是最火的前端请求库-工具,它是基于ajax和promise封装的,它强大的地方在于可以运行在浏览器端,也可以运行在nodejs端.

  • 安装使用和封装

  • 安装:npm i axios

截流和防抖

  • 目的:性能优化

  • 实现:闭包

截流

固定的时间内必须执行一次

一个程序事件在持续的触发中,我们使用截流保证在固定的时间段内执行一次

场景:搜索提示

防抖

永远保持执行最后一次

事件如果持续触发,防抖就一直等待,等到事件触发完毕后,才会执行最后一次

场景:滚动加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pinia-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值