集成用多了连这都忘了系列(三)

AJAX

1.什么是Ajax

ajax=异步js和XML,是一种用于创建快速动态网页的的技术,可以在整个网页不刷新的情况下对网页的某一部分进行更新.

2.ajax工作原理

ajax原理.PNG

3.XMLHttpRequest对象

3.1 创建XMLHttpRequest对象

var xml=new XMLHttpRequest()

实战代码:

var xmlhttp;

if(window.XMLHttpRequest){

xmlhttp=new XMLHttpRequest()

}else{

//IE5,IE6

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

}

3.2 使用XMLHttpRequest对象的open()和send()方法

open(GET/POST,url,同步:true/异步:false)规定请求的类型,URL,以及是

否异步处理,ajax用true.

send(string)将请求发送到服务器

实战代码:

var xmlhttp

if(window.XMLHttpRequest){

xmlhttp=new XMLHttpRequest()

}else{

//IE5,IE6

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

}

xmlhttp.onreadystatechange=function){

if(xml.readyState==4&&xmlhttp.status==200){

document.getElementById"myDiv").innerhtml=xmlhttp.responseText

}

}

//GET

xmlhttp.open("GET","xxxxxx",true)

xml http.send()

//POST

xmlhttp.open("POST","xxxxxx",true)

//如果要表单提交,需要添加http头信息

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded")

xmlhttp.send("name=tom&id=001")

3.3 获取服务器的响应

1)相应内容为XMLHttpRequest.responseText或者 XMLHttpRequest.responseXML

2)如果是XML格式,需要解析,遍历即可

xml=xmlhttp.responseXML

var x=xml.getElementByTagName("result")

var txt=""

for(i=0;i

xt=txt+x[i].childNodes[0].nodeValue+"
"

}

document.getElementById("myDiv").innerHTML=txt

3.4 请求被send之后,需要监听服务器响应

当readyState改变时,会触发onreadystatechange事件

readyState的值:

0:请求未初始化

1:已与服务器建立连接

2:请求已接收

3:处理中

4:完成,响应就绪

status:

200:"OK"

404:未找到页面

所以只要监听onreadystatechange函数,同时判断readyState是否为4且status为

200,就能判断是否响应成功

跨域

1.什么是跨域

url的协议,域名,端口任意一个与当前的url不同时,就是跨域,浏览器的同源限制会阻止该访问。无法访读取非同源的cookie,localStorage,indexedDB,以及访问DOM,发送AJAX 请求。

2.如何解决

1.JSONP

原理:web调用js文件不受跨域限制,所以可以通过调用服务器上的js文件获得JSON文件,但是这种方法只能发送GET请求。

实战代码:

Document

var callbackHandler=function(result){

alert("查询结果:"+result)

//服务器会调用callbackHandler,并将结果用参数的方式返回

}

var url="http://xxxx.com/xxx.php?id=0001&callback=callbackHandler"

var script=document.createElement("script")

script.setAttribute("src",url)

document.getElementByTagName("head")[0].appendChild(script)

/* 等同于直接写

2.CORS

CORS又叫跨域资源共享, 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制,只需要后端服务器实现CORS接口即可。浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request),为什么要分为简单请求和非简单请求,因为浏览器对这两种请求方式的处理方式是不同的。

2.1简单请求

请求方式为HEAD、POST 或者 GET

http头信息不超出以下字段:

Accept、Accept-Language 、

Content-Language、

Last-Event-ID、

Content-Type(限于三个值:application/x-www-form-urlencoded、multipart/form-data、text/plain)

(1) 对于简单请求,前端一般啥也不用干,浏览器发现这次跨源AJAX请求是简单请求,就自动在头信息之中,添加一个Origin字段。

GET /cors HTTP/1.1

(2)服务器收到之后,一看发现origin这个源在许可范围内,“好嘞~你可以进了!”

//必须有的字段:可以是*也可以是许可的源

Access-Control-Allow-Origin: http://api.bob.com

//可选,表示是否允许发送cookie,不允许就没有此字段

Access-Control-Allow-Credentials: true

//可选,不设置的情况下只有Cache-Control、Content-Language、Content-Type、、、Expires、Last-Modified、Pragma六中,不设置就没有该字段

Access-Control-Expose-Headers:xxx

(3)如果不在许可范围,也会返回正常http的反应,只是这个回应的头信息没有包含Access-Control-Allow-Origin字段,浏览器会报错。

2.2非简单请求

请求方法是PUT或DELETE,或者Content-Type字段的类型是application/json或者是自定义类型。非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。

浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。

3.WebSocket协议跨域

ajax跨域服务器404,Ajax和跨域相关推荐

  1. 域服务器重装系统,win10系统配置域控制器的详细步骤

    域控服务器能安全集中管理软件,一般适用于中大型企业,系统配置域控服务器时,需先安装域服务.那么win10系统如何配置域控制器?针对这一问题,小编来和大家说说具体操作步骤. 具体方法如下: 1.单击开始 ...

  2. 域服务器怎么修改管理员密码,域服务器更改客户端管理员的密码

    域服务器更改客户端管理员的密码 内容精选 换一换 管理员应定期修改Kerberos管理员"kadmin"的密码,以提升系统运维安全性.修改此用户密码将同步修改OMS Kerbero ...

  3. ad域服务器用户登录限制,AD域监控用户登录, 活动目录监控用户, AD登录历史审核...

    实时监控用户登录操作 用户登录到其域计算机是在任何企业都会发生的日常活动.一开始,这看起来可能是一个简单的Active Directory事件,但分配有不同角色的管理员可将这个宝贵的数据用于各种审核. ...

  4. 域服务器禁止复制文件,ad域可以禁止拷贝数据库

    ad域可以禁止拷贝数据库 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 文档数 ...

  5. 如何通过域服务器推送安装文件,域环境推送exe程序并自动安装教程域环境推送exe程序并自动安装教程.pdf...

    域环境推送exe程序并自动安装教程域环境推送exe程序并自动安装教程 域环境推送exe 程序并自动安装教程 一.思路 微软可以通过组策略对域中的计算机实现对 MSI 格式的软件程序实现派发后自动运行, ...

  6. 黑马ajax学习笔记02--art-template模板,自动提示,防抖,三级联动,fromData传参及传文件,同源,jsonp,天气预报,CROS,服务器桥接,withCredential跨域登录

    1.模板引擎概述 作用:使用模板引擎提供的模板语法,可以将数据和HTML拼接起来 实际上是实现在客户端做数据拼接 art-template模板引擎 官网:http://aui.github.io/ar ...

  7. 如何使用Ajax进行与服务器交互

    @如何使用Ajax 如何使用Ajax进行与服务器交互 AJAX全称为"Asynchronous [ei'siŋkrənəs] JavaScript and XML"(异步JavaS ...

  8. Metasploit渗透某高校域服务器

    本文作者:i 春秋签约作家--shuteer 前期准备:1. 使用Veil生成免杀PAYLOAD: 2. 有一个外网IP的服务器,安装好metasploit,方便操作. 一.SHELL反弹meterp ...

  9. WinSVR2022 搭建 AD 辅域服务器

    继上次通过 Windows Server 2022 搭建 AD 域控制器后,本次将在主域控制器正常使用情况下再为了避免单点故障,搭建辅 AD 域控制器. WinSVR2022 搭建 AD 域服务器和 ...

最新文章

  1. IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决
  2. fastdfs详细安装教程
  3. pku 2195 Going Home 最小费最大流问题
  4. lisp 计算三点的夹角_已知三点坐标求夹角 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  5. 2016版单词的减法_在2016年最大的电影中,女性只说了27%的单词。
  6. 直播、线上办公、IoT需求井喷,Wi-Fi 6如何防止网络“塞车”?
  7. C-order/Fortran-order(Row-/Column-major order)
  8. 牛客练习赛29: F. 算式子
  9. 导入其他用户的EFS证书
  10. iVMS-4200 Mac 版监控客户端切换中文语言的方法
  11. 支付宝小程序人脸识别认证
  12. 诛仙服务器技能修改,2021年5月21日正式服技能修改公告
  13. 阿兰图灵和冯诺依曼,谁才是可称得起计算机之父呢?
  14. 说说那些好用的图片调色软件
  15. 谈一谈凑单页的那些优雅设计
  16. 通过Gazebo仿真学TurtleBot3(四)——简单的/cmd_vel控制
  17. java筆試題,Java筆試題附答案 | 學步園
  18. Android App的设计架构:MVC,MVP,MVVM与架构经验谈
  19. 计算机组成原理 唐朔飞229页
  20. EXCEL 单元格如何显示输入的首个单引号字符

热门文章

  1. 二十四、Python数据建模(下),禁止转载
  2. sklearn特征的提取(上)
  3. java定时调度main方法_java相关:Spring中实现定时调度的几种方法
  4. ES 6 +ES 5 的相关学习笔记
  5. 多游课堂C++ 百万并发网络通信引擎架构与实现学习笔记
  6. “中国GPT-3”开放APP开发接口,百万奖金智能应用开发大赛同步启动
  7. baseline发布!OPPO安全AI挑战赛,人脸识别对抗攻击赛题详解
  8. 代码+实例:深度学习中的“轴”全解
  9. 论文盘点:GAN生成对抗样本的方法解析
  10. 开源项目 | 五分钟搭建BERT服务,实现1000+QPS