前后端通信

瀏覽器的同源政策限制:端口,域名,協(xié)議 ,只要一個(gè)不一樣就跨域

前后端如何通信:

  • Ajax : 短連接
  • Websocket : 協(xié)議 http https (SSL) file socket.io 長連接,雙向的。
  • CORS fetch()
Ajax實(shí)現(xiàn)
    <script>
         function ajax(options){
             // 定義一個(gè)操作對象
            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)
                    // 發(fā)送請求
                    xhr.send()
                }
                // 判斷是否為post請求方式
                if(type === "POST"){
                    // 初始化一個(gè)請求
                    xhr.open(type,url, true)

                    // 設(shè)置請求頭
                    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
                    
                    // 發(fā)送請求
                    xhr.send(dataArr.join('&'))
                }

                // 監(jiān)聽后臺返回過來的數(shù)據(jù)
                xhr.onreadystatechange = function(ev){
                  // console.log(ev)
                    if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {  // 304未修改
              // 如果請求成功之后,回調(diào)我們的success函數(shù)
                            options.success(xhr.responseText)
          }else {
                          // 如果請求失敗之后,回調(diào)我們的error函數(shù)
              options.error(xhr.responseText)
          }
                }
            }
        }
    
         ajax({
             url: "https://www.baidu.com",
             //成功調(diào)用success函數(shù)
             success:function(res){
                 console.log("這里是ok的")
                 console.log(res)
             }
         })
         
    </script>

Object.assign()

  • 用于將所有可枚舉屬性的值從一個(gè)或多個(gè)源對象復(fù)制到目標(biāo)對象。它將返回目標(biāo)對象。
  • 如果目標(biāo)對象中的屬性具有相同的鍵,則屬性將被源中的屬性覆蓋。后來的源的屬性將類似地覆蓋早先的屬性。

toUpperCase

  • 一個(gè)新的字符串,在其中 stringObject 的所有小寫字符全部被轉(zhuǎn)換為了大寫字符。

toLowerCase

  • 一個(gè)新的字符串,在其中 toLowerCase的所有大寫字符全部被轉(zhuǎn)換為了小寫字符。(和上面相反)

for in

  • 用于對數(shù)組或者對象的屬性進(jìn)行循環(huán)操作。
  • 循環(huán)中的代碼每執(zhí)行一次,就會對數(shù)組的元素或者對象的屬性進(jìn)行一次操作。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 同源策略及限制 同源策略的概念 同源:http協(xié)議,域名, 端口三者均相同同源策略是用來限制在一個(gè)源上加載的文檔或...
    coolheadedY閱讀 1,350評論 0 5
  • 一、同源策略 同源就是當(dāng)協(xié)議、域名和端口都一致時(shí),才算是同源,有一個(gè)不同都不是同源。 同源策略官方解釋就是,限制從...
    JokerPeng閱讀 1,350評論 0 3
  • 1、瀏覽器的同源政策限制:端口,域名,協(xié)議 ,只要一個(gè)不一樣就跨域 2、前后端通信的方式 ajax Websock...
    不染事非閱讀 1,159評論 1 0
  • 瀏覽器和服務(wù)器端通過HTTP報(bào)文進(jìn)行通信,HTTP報(bào)文是一段按照特定格式編寫的字符串。在前后端通信過程中,發(fā)送方需...
    wuww閱讀 1,078評論 0 2
  • 不管多么美好浪漫的愛情,最后都不免歸于平淡的婚姻生活。有人怕窮,所以寧可在寶馬車?yán)锟?,也不愿坐在自行車上笑。無數(shù)個(gè)...
    花花世界213閱讀 515評論 0 0

友情鏈接更多精彩內(nèi)容