前端面试题--XMLHTTPRequest和JSONP的应用场景,以及其分别如何检测请求错误的

  1. XMLHttpRequest用于浏览器端与服务器端异步请求数据从面实现对页面的无刷新修改,支持GET/POST请求,一般用于非跨域的场景。如果需要使用XMLHttpRequest跨域请求数据,需要通过CORS头支持。 JSONP用于跨域请求数据的场景,只支持GET请求。
  2. XMLHttpRequest异常判断一般通过该对象的readystate和http状态码status来判断,JSONP的异常判断一般是onerror事件和超时timer来判断。
    (答案源自牛客网面试试题)

XMLHttpRequest

XMLHttpRequest是一个浏览器接口,是JavaScript可以进行Http通信,这就是我们熟悉的Ajax。

跨域资源共享

XMLHttp可以想不同的域名的服务器发出http请求,叫做CORS
但是必须满足两个条件按:
1. 浏览器需要支持CORS
2. 服务器允许跨域,服务头需要添加一些选项:

self.set_header('Access-Control-Allow-Origin', '*')
self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
self.set_header('Access-Control-Max-Age', 1000)
self.set_header('Access-Control-Allow-Headers', '*')
self.set_header('Content-type', 'application/json')

JSONP

jsonp的核心原理就是目标页面回调本地页面的方法,并带入参数。
为什么需要jsonp?
由于浏览器的安全限制,数据不可以直接跨域,需要通过在授权的数据返回里设置jsonp来让该接口允许所有的调用者获取数据。

jsonp可以将目标代码作为js的形式加载过来
还可以直接利用jquery的ajax请求jsonp

你可能感兴趣的:(javascript,面试)