get请求与post,跨域

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

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

2、post请求

使用频率仅次于get请求,通常用于向服务器发送应该被保存的数据,post请求应该把数据作为请求的主体提交,而get请求传统上不是这样。post请求的主体可以包含非常多的数据,而且格式不限。

 跨域源资源共享:

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

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

其他跨域技术

1、图像ping

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

2、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);

 

posted @ 2018-01-02 23:50  lu0511  阅读(6809)  评论(0编辑  收藏  举报