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
    这个请求头,表示这个源可以发送凭据请求 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值