前后端通信

浏览器的同源政策限制:端口,域名,协议 ,只要一个不一样就跨域

前后端如何通信:

  • Ajax : 短连接
  • Websocket : 协议 http https (SSL) file socket.io 长连接,双向的。
  • CORS fetch()
Ajax实现
    <script>
         function ajax(options){
             // 定义一个操作对象
            var pramas = {
                url:'',
                type: 'get',
                data: {},
            success: function (data) {},
            error: function (err) {},
            }
            // 对象属性覆盖
            options = Object.assign(pramas, options)
            // 传入了要请求的地址才会开始做其他的事情
            if(options.url){
                // 拿到请求对象
                var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP")
                var url = options.url,    //  htpp://www.baidu.com
                    type = options.type.toUpperCase(), // GET
                    data = options.data,    // {name:"kk",age:12}
                    dataArr = [];            // []
                // 遍历data对象
                for(let key in data){
                    let value = key + '='+ data[key]
                    dataArr.push(value)
                }
                // dataArr = ["name=kk","age=12"]

                // 判断是否为get方式请求
                if(type === "GET"){
                    url = url + "?" + dataArr.join('&')
                    // url = http://www.baidu.com?name=kk&age=12
                    // 初始化请求
                    xhr.open(type, url, true)
                    // 发送请求
                    xhr.send()
                }
                // 判断是否为post请求方式
                if(type === "POST"){
                    // 初始化一个请求
                    xhr.open(type,url, true)

                    // 设置请求头
                    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
                    
                    // 发送请求
                    xhr.send(dataArr.join('&'))
                }

                // 监听后台返回过来的数据
                xhr.onreadystatechange = function(ev){
                  // console.log(ev)
                    if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {  // 304未修改
              // 如果请求成功之后,回调我们的success函数
                            options.success(xhr.responseText)
          }else {
                          // 如果请求失败之后,回调我们的error函数
              options.error(xhr.responseText)
          }
                }
            }
        }
    
         ajax({
             url: "https://www.baidu.com",
             //成功调用success函数
             success:function(res){
                 console.log("这里是ok的")
                 console.log(res)
             }
         })
         
    </script>

Object.assign()

  • 用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
  • 如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性。

toUpperCase

  • 一个新的字符串,在其中 stringObject 的所有小写字符全部被转换为了大写字符。

toLowerCase

  • 一个新的字符串,在其中 toLowerCase的所有大写字符全部被转换为了小写字符。(和上面相反)

for in

  • 用于对数组或者对象的属性进行循环操作。
  • 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 同源策略及限制 同源策略的概念 同源:http协议,域名, 端口三者均相同同源策略是用来限制在一个源上加载的文档或...
    coolheadedY阅读 1,347评论 0 5
  • 一、同源策略 同源就是当协议、域名和端口都一致时,才算是同源,有一个不同都不是同源。 同源策略官方解释就是,限制从...
    JokerPeng阅读 1,350评论 0 3
  • 1、浏览器的同源政策限制:端口,域名,协议 ,只要一个不一样就跨域 2、前后端通信的方式 ajax Websock...
    不染事非阅读 1,155评论 1 0
  • 浏览器和服务器端通过HTTP报文进行通信,HTTP报文是一段按照特定格式编写的字符串。在前后端通信过程中,发送方需...
    wuww阅读 1,076评论 0 2
  • 不管多么美好浪漫的爱情,最后都不免归于平淡的婚姻生活。有人怕穷,所以宁可在宝马车里哭,也不愿坐在自行车上笑。无数个...
    花花世界213阅读 514评论 0 0

友情链接更多精彩内容