get请求与post,跨域

Posted lu0511

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

 

以上是关于get请求与post,跨域的主要内容,如果未能解决你的问题,请参考以下文章

将不确定变为确定~开发人员应该明确知道跨域Post的问题

关于jQuery.ajax()的jsonp碰上post详解

JQUERY的AJAX中 get()post()的跨域方法

jQuery 封装 ajax 的使用方法

如何解决微信上跨域请求withCredentials带不上cookie

cURL和file_get_contents实现模拟post请求