xhr的知识点

get请求
    get请求的查询字符串必须使用encordURIComponent编码

post提交
    默认情况下,对服务器而言,表单提交和post提交是不一样的,使用xhr模拟表单提交,第一步,将content-type头部设置
    为application/x-www-formurlencoded。第二步,
注意:
    POST请求相比GET请求要占用更多资源。从性能方面说,发送相同数量的数据, GET 请求比 POST 请求要快两倍。

XMLHttpRequest Level 2
    FormData类型
        需求中很多要对表单数据进行序列化,,因此XMLHttpRequest Level 2中新增了FormData类型,该类型用于
        表单的序列化,也便于创建和表单类似格式的数据,然后通过xhr来发送,例如,let data = new FormData;
        data.append("name", "zs");
        使用 FormData 的另一个方便之处是不再需要给 XHR 对象显式设置任何请求头部了。XHR 对象能 够识别作为 
        FormData 实例传入的数据类型并自动配置相应的头部。
    timeout
        给xhr添加timeout属性,用于表示发送请求后,如果超过这个时间,则中断请求,这个时候readyState依然会变为4,
        也会触发onreadystatechange事件处理程序,不过这个时候访问status属性会出错,因此,建议将检查status的
        代码放入try catch中。
    overrideMimeType
跨域资源共享
    跨源资源共享(CORS,Cross-Origin Resource Sharing)定义了浏览器与服务器如何实现跨源通信。
    CORS 背后的基本思路就是使用自定义的 HTTP 头部允许浏览器和服务器相互了解,以确实请求或响应 应该成功还是失败。

    对于get和post这种简单的请求,没有自定义头部,而且请求体是text/plain类型,这样的请求在发送时会有一个额外的头部
    叫Origin(应该是浏览器自己处理的),Origin头部包含发送请求的页面的源(协议,域名,端口号),Origin的一个例子,
    Origin: http://www.nczonline.net。如果服务器决定响应,那么服务器应该发送Access-Control-Allow-Origin,
    如果服务器没有这个头部,或者有但是源不匹配,则表示服务器不会处理这个请求。无论是请求还是响应都不会包含cookie信息
预检请求(preflighted request)
凭据请求
    如果请求头里面带了凭据,但是响应头里面没有Access-Control-Allow-Credentials:true,那么浏览器是不会把响应
    (responseText是空字符串,status是0,onError()被调用)交给js。服务器也可以在预检请求中返回Access-Control-Allow-Credentials
    这个请求头,表示这个源可以发送凭据请求 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XHR 是 XMLHttpRequest 的缩写,它是一种可以在不重新加载整个页面的情况下,通过 JavaScript 发送 HTTP 请求和接收服务器响应的技术。在网页开发中,我们经常会用到 XHR 来实现异步数据交互,比如获取远程数据、发送表单数据等等。 要实现一个简单的 XHR 请求,我们可以通过以下几个步骤来操作: 1. 创建一个 XMLHttpRequest 对象 2. 指定请求的方法、URL 和是否异步 3. 发送请求 4. 监听 XHR 对象的状态变化,并在接收到响应后处理数据 下面是一个简单的示例代码: ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.example.com/data', true); xhr.send(); xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { console.log('成功收到响应:', xhr.responseText); } else { console.log('请求出错:', xhr.status); } } }; ``` 在这个例子中,我们创建了一个 XHR 对象,并使用 GET 方法向 https://api.example.com/data 发送了一个异步请求。然后,我们监听 XHR 对象的状态变化,当 readyState 变为 XMLHttpRequest.DONE 时,表示请求完成。此时我们可以通过 status 属性来判断请求的状态,通过 responseText 属性来获取服务器返回的数据。 总之,XHR 是一种非常有用的技术,可以让我们在网页中实现更加流畅的用户体验,并为用户提供更加丰富的交互功能。希望这个回答能够帮助你更好地了解并使用 XHR

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值