手动编写Ajax,不依赖第三方库?跨域(原理)的几种实现方式?
1XMLHTTPRequest
2状态码说明
3跨域
IE兼容性问题ActiveXObject
readyState:0(未初始化)还没有调用send()方法,还没有发送
1(载入)乙调用send()方法,正在发送请求
2(载入完成)send()执行完成,已经接收到全部响应内容
3(交互)正在解析响应内容
4(完成)响应内容解析完成,可以在客户端调用了
status:
2XX表示成功处理请求
3XX重定向,浏览器直接跳转;
301 redirect: 301 代表永久性转移(Permanently Moved)
302 redirect: 302 代表暂时性转移(Temporarily Moved )
HTTP 304: Not Modified
标准解释是:Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
4XX客户端请求错误,404找不到
5XX服务器端错误,504服务器链接数据库超时
跨域:
前端:JSONP,
服务器端可以设置:http header
跨域概念:浏览器有同源策略,不予许Ajax访问其他域的接口
协议、域名、端口有一个不同就是跨域
http默认端口是80,HTTPS的是443
可以跨域的三个标签:
<img src=“”>用于打点统计,统计网站可能是其他域,没有兼容问题,防盗链,例如,百度的图片,不是百度的链接就没有办法用
<link href=xxx>可以使用CDN,CDN的也是其他域
<script src=XXX>可以使用CDN,CDN的也是其他域,可以用于JSONP
所有的跨域请求都必须经过信息提供方的允许
如果未经允许即可获取,浏览器出现同源策略的问题