get请求与post,跨域

一、get是最多见的请求类型,经常使用于向服务器查询某些信息,必要时能够将查询字符串参数追加到url的末尾,以便将信息发送给服务器。json

对XHR来讲位于传入open()方法的url末尾的查询字符串必须通过正确的编码才行。跨域

二、post请求浏览器

使用频率仅次于get请求,一般用于向服务器发送应该被保存的数据,post请求应该把数据做为请求的主体提交,而get请求传统上不是这样。post请求的主体能够包含很是多的数据,并且格式不限。服务器

 跨域源资源共享:cors

cors:使用自定义的http头部让浏览器与服务器进行沟通,从而决定请求或响应应该成功仍是失败。在发送请求时须要给它附加一个额外的origin头部函数

IE对cors的实现:引入了XDR类型post

其余跨域技术jsonp

一、图像ping编码

动态建立图像常常用于图像ping,图像ping 是与服务器进行简单、单向的跨域通讯的一种方式。请求的数据是经过查询字符串的形式发送的,而相应能够是任意内容,但一般是像素图或204响应。经过图像ping浏览器得不到任何具体的数据,可是经过侦听load和error事件,能知道响应是何时接收到的。url

二、jsonp

jsonp看起来与json差很少,只不过是被包含在函数调用中的JSON,就像下面这样

callback({"name":"Nicholas"});

jsonp由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字通常是在请求中指定的。回调函数的名字通常是在请求中指定的,而数据就是传入回调函数中的json数据,下面是一个典型的jsonp请求

http://freegeoip.net/json/?callback = handleResponse

jsonp是经过动态<script>元素来使用的,使用时能够为src属性指定一个跨域url,这里的<script>与<img>元素相似,都有能力不受限制的从其它域加载资源,由于jsonp是有效的js代码,因此在请求完成后,即在jsonp响应加载到页面中之后就会当即执行。

 

function handleResponse(response){
  alert('you are at ip address' + response.ip +",which is in"+response.city+","+response.region_name);
}
var script = document.createElement("script");
script.src = "http://freegeoip.net/json/?callback = handleResponse";
document.body.insertBefore(script,document.body.firstChild);
相关文章
相关标签/搜索