当前位置:首页 > 后端开发 > 原生js--http请求

原生js--http请求

7个月前 (05-20)42

1、终止请求和超时

终止请求XMLHttpRequest对象提供abort方法,调用该方法时触发abort事件

XHR2提供了timeout属性,当超时发生时触发timeout事件。但浏览器尚不支持自动超时。可以使用setTimeout模拟实现。

例如:

function timedGetText( url, time, callback ){
    var request = new XMLHttpRequest();
    var timeout = false;
    var timer = setTimeout( function(){
        timeout = true;
        request.abort();
    }, time );
    request.open( "GET", url );
    request.onreadystatechange = function(){
        if( request.readyState !== 4 ) return;
        if( timeout ) return;
        clearTimeout( timer );
        if( request.status === 200 ){
            callback( request.responseText );
        }
    }
    request.send( null );
}

2、跨域HTTP请求

XHR2通过在HTTP响应中选择发送合适的CORS(Cross-Origin Resource Sharing),允许跨域访问网站,Firefox、Chrome等都已经支持CORS,IE8通过SDomainRequest对象支持。但这种跨域请求不会包含cookie和HTTP身份验证令牌,可以通过设置withCredentials为true才能实现包含以上信息。

 

3、借助script发送HTTP请求(jsonp)

支持jsonp的服务不会强制指定客户端必须实现的回调函数名称

使用script元素发送JSON请求

function getJSONP( url, callback ){
    var cbnum = "cb" + getJSONP.counter++;
    var cbname = "getJSONP." + cbnum;
    if( url.indexOf( "?" ) === -1 ){
        url += "?jsonp=" + cbname;
    }else{
        url += "&jsonp" + cbname
    }
    var script = document.createElement( "script" );
    // 回调函数
    getJSONP[cbnum] = function( response ){
        try{
            callback( response );
        }finally{
            delete getJSONP[num];
            script.parentNode.removeChild( script );
        }
    };
    script.src = url;
    document.body.appendChild( script );
}
getJSONP.counter = 0;

作者:charling
来源链接:https://www.cnblogs.com/charling/p/3579704.html

标签: HTTP

“原生js--http请求” 的相关文章

http请求方法总结

http请求方式总结: get请求:默认的请求方式,返回页面具体内容,参数会显示在地址栏中 head请求:类似于get'请求,但没有返回页面具体内容...

HTTP协议的请求方法

http的请求报文由:请求行、首部、空行、主体四个部分组成。其中请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index...

怎么能避免浏览器请求超时

最近遇到一个问题,就是前端发起http请求后,后端接近要10几分钟才能完整处理好并且响应回来,而浏览器在2分多种的时候,因为请求一直没有响应而failed了,虽然后...

简述HTTP请求过程

简述HTTP请求过程

当我们在浏览器输入一个网址,然后按下回车,接下来浏览器显示了页面。网速好的话这之间可能就一秒,但在这一秒内到底发生了什么? Http的工作原理可简单的归纳如下: 1.连...

如何解决http请求返回结果中文乱码

如何解决http请求返回结果中文乱码 1、问题描述 http请求中,请求的结果集中包含中文,最终以乱码展示。 2、问题的本质 乱码的本质是服务端返回的字符集编码...

遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效。”

windows 2008下IIS7 安装ASP.NET 遇到如下错误: HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为...

请说一下http请求的基本过程

首先http是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约定一个规范。 1.连接 当我们输入这样一个请求时,首先要建立一个so...

HTTP请求方式中8种请求方法

HTTP请求方式中8种请求方法

详细介绍(转载):https://blog.csdn.net/weixin_42981419/article/details/8616224...

http请求中get请求可以缓存和post请求不可缓存

http请求中get请求可以缓存和post请求不可缓存

˃˃ _ Java侠"˃2019独角兽企业重金招聘Python工程师标准>>> GET请求后退/刷新无害,POS...

AJAX请求和普通HTTP请求区别?

AJAX请求和普通HTTP请求区别?

哎,碰到面试人员这样的问题?我。。。。。。。。。。。。。。。。。。。 本来还以为ajax底层封装了什么来实现类似url请求的功能,后来查了下资料并...