ajax跨域服务器404,Ajax和跨域
集成用多了连这都忘了系列(三)
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和跨域相关推荐
- 域服务器重装系统,win10系统配置域控制器的详细步骤
域控服务器能安全集中管理软件,一般适用于中大型企业,系统配置域控服务器时,需先安装域服务.那么win10系统如何配置域控制器?针对这一问题,小编来和大家说说具体操作步骤. 具体方法如下: 1.单击开始 ...
- 域服务器怎么修改管理员密码,域服务器更改客户端管理员的密码
域服务器更改客户端管理员的密码 内容精选 换一换 管理员应定期修改Kerberos管理员"kadmin"的密码,以提升系统运维安全性.修改此用户密码将同步修改OMS Kerbero ...
- ad域服务器用户登录限制,AD域监控用户登录, 活动目录监控用户, AD登录历史审核...
实时监控用户登录操作 用户登录到其域计算机是在任何企业都会发生的日常活动.一开始,这看起来可能是一个简单的Active Directory事件,但分配有不同角色的管理员可将这个宝贵的数据用于各种审核. ...
- 域服务器禁止复制文件,ad域可以禁止拷贝数据库
ad域可以禁止拷贝数据库 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 文档数 ...
- 如何通过域服务器推送安装文件,域环境推送exe程序并自动安装教程域环境推送exe程序并自动安装教程.pdf...
域环境推送exe程序并自动安装教程域环境推送exe程序并自动安装教程 域环境推送exe 程序并自动安装教程 一.思路 微软可以通过组策略对域中的计算机实现对 MSI 格式的软件程序实现派发后自动运行, ...
- 黑马ajax学习笔记02--art-template模板,自动提示,防抖,三级联动,fromData传参及传文件,同源,jsonp,天气预报,CROS,服务器桥接,withCredential跨域登录
1.模板引擎概述 作用:使用模板引擎提供的模板语法,可以将数据和HTML拼接起来 实际上是实现在客户端做数据拼接 art-template模板引擎 官网:http://aui.github.io/ar ...
- 如何使用Ajax进行与服务器交互
@如何使用Ajax 如何使用Ajax进行与服务器交互 AJAX全称为"Asynchronous [ei'siŋkrənəs] JavaScript and XML"(异步JavaS ...
- Metasploit渗透某高校域服务器
本文作者:i 春秋签约作家--shuteer 前期准备:1. 使用Veil生成免杀PAYLOAD: 2. 有一个外网IP的服务器,安装好metasploit,方便操作. 一.SHELL反弹meterp ...
- WinSVR2022 搭建 AD 辅域服务器
继上次通过 Windows Server 2022 搭建 AD 域控制器后,本次将在主域控制器正常使用情况下再为了避免单点故障,搭建辅 AD 域控制器. WinSVR2022 搭建 AD 域服务器和 ...
最新文章
- IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决
- fastdfs详细安装教程
- pku 2195 Going Home 最小费最大流问题
- lisp 计算三点的夹角_已知三点坐标求夹角 - 程序语言 - 小木虫 - 学术 科研 互动社区...
- 2016版单词的减法_在2016年最大的电影中,女性只说了27%的单词。
- 直播、线上办公、IoT需求井喷,Wi-Fi 6如何防止网络“塞车”?
- C-order/Fortran-order(Row-/Column-major order)
- 牛客练习赛29: F. 算式子
- 导入其他用户的EFS证书
- iVMS-4200 Mac 版监控客户端切换中文语言的方法
- 支付宝小程序人脸识别认证
- 诛仙服务器技能修改,2021年5月21日正式服技能修改公告
- 阿兰图灵和冯诺依曼,谁才是可称得起计算机之父呢?
- 说说那些好用的图片调色软件
- 谈一谈凑单页的那些优雅设计
- 通过Gazebo仿真学TurtleBot3(四)——简单的/cmd_vel控制
- java筆試題,Java筆試題附答案 | 學步園
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- 计算机组成原理 唐朔飞229页
- EXCEL 单元格如何显示输入的首个单引号字符
热门文章
- 二十四、Python数据建模(下),禁止转载
- sklearn特征的提取(上)
- java定时调度main方法_java相关:Spring中实现定时调度的几种方法
- ES 6 +ES 5 的相关学习笔记
- 多游课堂C++ 百万并发网络通信引擎架构与实现学习笔记
- “中国GPT-3”开放APP开发接口,百万奖金智能应用开发大赛同步启动
- baseline发布!OPPO安全AI挑战赛,人脸识别对抗攻击赛题详解
- 代码+实例:深度学习中的“轴”全解
- 论文盘点:GAN生成对抗样本的方法解析
- 开源项目 | 五分钟搭建BERT服务,实现1000+QPS