美文网首页
ajax面试知识点

ajax面试知识点

作者: guoXuJianShu | 来源:发表于2021-09-17 11:54 被阅读0次

    1. 手写一个简易的ajax

    const xhr = new XMLHttpRequest()
    // get请求
    xhr.open('GET', '/data/test.json', true)
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
                // console.log(
                //     JSON.parse(xhr.responseText)
                // )
                alert(xhr.responseText)
            } else if (xhr.status === 404) {
                console.log('404 not found')
            }
        }
    }
    xhr.send(null)
    
    // post请求
    xhr.open('POST', '/data/test.json', true) // true为异步请求,false为同步请求
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
                // console.log(
                //     JSON.parse(xhr.responseText)
                // )
                alert(xhr.responseText)
            } else if (xhr.status === 404) {
                console.log('404 not found')
            }
        }
    }
    constpostData= { userName: 'zhangsan', password: '123456' }
    xhr.send(JSON.stringify(pastData))
    

    2. xhr.readyState

    • 0: (未初始化)还没投调用send()方法
    • 1:(载入)以调用send()方法,正在发送请求
    • 2:(载入完成)send()方法执行完成,已经接收到全部响应内容
    • 3:(交互)正在解析响应内容
    • 4:(完成)响应内容解析完成,可以在客户端调用

    3. 跨域

    同源策略:

    • ajax请求时,浏览器要求当前网页和server必须同源
    • 同源:协议、域名、端口三者必须一致

    加载图片、CSS、JS 可无视同源策略

    • <img/>可用于统计打点,可使用第三方统计服务

    • <link/> <script> 可使用CDN,CDN一般都是外域

    • <script> 可实现JSONP

    所有的跨域,都必须经过server端允许和配合

    未经server端允许就实现跨域,说明浏览器有漏洞,危险信号

    4.JSONP

    • script可以绕过跨域限制
    • 服务器可以任意动态拼接数据返回
    • 所以,script就可以获得跨域的数据,只要服务端愿意返回

    相关文章

      网友评论

          本文标题:ajax面试知识点

          本文链接:https://www.haomeiwen.com/subject/rezdwktx.html