1、POST的跨域原理解析及GET和POST的区别
但是也是因为浏览器同源策略的原因,前端页面不能跨域请求所需资源
但是在日常的WEB开发中,需要进行跨域请求,常用有两种方式可以跨域请求所需资源
1:JSONP
JSONP是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,老式浏览器全部支持,
服务器改造非常小。
JSONP的原理是利用script标签的src属性可以进行不受同源策略的限制,进行跨域请求数据的属性,在
HTML页面中添加一个script标签,向服务器发送请求,服务器收到请求后,返回数据,
将数据放在指定的回调函数中,回调函数中可以对数据进行操作
2:GET、POST
CORS是W3C标准,它允许浏览器向跨源服务器发送AJAX请求,当浏览器发送请求的时候,会在请求头自动添加上origin字段,值为发送请求的页面的所在域名,请求到达服务器,服务器会根据这个字段校验,如果这个源不在许可范围内,会有一个正常的响应,但是响应头部没有Access-Control-Allow-Origin,浏览器报抛出一个错误,会被xhr的onerror函数捕获,但是HTTP的状态码也有可能是200;如果请求的类型是PUT或者DELETE等特殊的请求方法,或者content-type:application/json,那么,这个请求为非简单请求,浏览器会在发送正式请求前先发送一个预检请求,预检请求中的请求头部信息除了origin源字段以外,还有Access-Control-Allow—Method和Access-Control-Allow—Header,预检请求是一个OPTION类型的请求,只要服务端通过了预检请求,之后的请求就和简单请求是一样的
GET、POST是ajax请求,ajax请求是基于XMLHttpRequest对象的跨域请求方式(低版本的ie是
ActiveXObject对象),XMLHttpRequest是ajax的核心机制,
它是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,
而不阻塞用户。达到无刷新的效果。
GET和POST的区别:
1.post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
2.post发送的数据量更大(get有url长度限制)
3.post能发送更多的数据类型(get只能发送ASCII字符)
4.post比get慢
5.get是幂等的,而post不是幂等的
6.get可以被缓存,post不可以被缓存
因为get请求的请求参数是放在header中(添加在链接后面),而post请求的参数是放在body中,其实url的长度限制不是get和post所决定的,而是浏览器有所限制,和get、post没有基本没有关系
get和post相比,要快,是因为get和post的请求过程不同,不多前三步都是一样的,都是要先经过和服务器的三次握手:
1.浏览器请求tcp连接(第一次握手)
2.服务器答应进行tcp连接(第二次握手)
3.浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
get请求在第四步就会接收到了服务器返回的数据,而post请求在第四步是接收到服务器发送的100 continue指令,客户端在发送数据请求服务端,服务端才会去返回数据,
就是说POST比GET多进行了一次客户端和服务器的打交道,GET请求产生了一个TCP数据包,而POST请求产生了两个TCP数据包
2、对于网页中的form元素,method 属性的get和post有何不同?
1、Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如url,xxx.com/test?name=asd&id=123
2、Post 方法通过 HTTP post 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由 action 属性能所指的程序处理
3、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post
get和post是http请求的两种方式;
一般来说,get方式应用于获取数据(查询),而不对数据本身做更改,post方式应用于修改数据(增删改)。
get和post表现形式上的差别简单列举如下,
浏览器缓存:
浏览器可能会缓存get请求结果,而不会缓存post请求结果;
get和post对参数的处理:
get请求参数直接存在于URI(可以简单理解为get请求是拼接URI),并能在地址栏看到,post请求参数会存放到专门的body中,不会在地址栏中显示。
3、get和post请求的区别
GET请求和POST请求的区别:
1、 get是从服务器上获取数据,post是向服务器传送数据。
2、 get请求时通过URL直接请求数据,数据信息可以在URL中直接看到,比如浏览器访问;而post请求是放在请求头中的,用户无法直接看到。
3、 get传送的数据量较小,有限制,不能大于2KB;这主要是因为它受约于URL长度的限制。post传送的数据量较大,一般被默认为不受限制,但理论上,IIS4中最大量为80KB,IIS5中为100KB。
4、get请求因为数据参数是暴露在URL中的,所以安全性比较低,如密码不能暴露的就不能用get请求;post请求中,请求信息是放在请求头的,安全性较高,可以使用。
以上内容参考 百度百科-HTTP
1、在安全方面
Post请求更安全,get请求的是静态资源,会缓存,如果你是数据的话,就无法缓存下来。
2、在数据类型方面
post请求发送的数据更大且能发送数据类型比较多,,get请求有url长度限制,只能发送ASCII字符。
3、在传输方面
get请求参数通过url传递,,post请求放在request body中传递。
4、在TCP数据包方面
ost请求产生两个TCP数据包,get请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据。
5、在请求过程方面
Post请求,浏览器请求tcp连接属于第一次接触,服务器答应进行tcp连接属于第二次接触,浏览器确认,并发送post请求头属于第三次接触,服务器返回100 Continue响应。
get请求,浏览器请求tcp连接,属于第一次接触,服务器答应进行tcp连接也是第二次接触,浏览器确认,并发送get请求头和数据属于第三次接触,服务器返回200 OK响应。
4、和POST方法比较起来,GET方法具有的特点是啥?
GET - 从指定的服务器中获取数据
POST - 提交数据给指定的服务器处理
GET方法:
使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器:
/test/demo_form.jsp?name1=value1&name2=value2
特点:
GET请求能够被缓存
GET请求会保存在浏览器的浏览记录中
以GET请求的URL能够保存为浏览器书签
GET请求有长度限制
GET请求主要用以获取数据
POST方法:
使用POST方法时,查询字符串在POST信息中单独存在,和HTTP请求一起发送到服务器:
POST /test/demo_form.jsp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
特点:
POST请求不能被缓存下来
POST请求不会保存在浏览器浏览记录中
以POST请求的URL无法保存为浏览器书签
POST请求没有长度限制
GET和POST的区别:
选C
1. 区别: 在Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,post和get方法在使用上至少有以下几点不同: 1、Get方法通过URL请求来传递用户的输入。Get方法传递的参数和值在URL上用?name=value&name=value的形式显示。Post方法通过另外的形式。 2、通过get方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过get方法提交数据时,用户名和密码将出现在URL上。如果登陆页面可以被浏览器缓存或其他人可以访问客户的这台机器。那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,get方法会带来严重的安全性问题。 3、显然Get方法局限性在于当要传的值很多是,就不便这样,否则URL可能超长度而出错。 本人认为如非必要的情况下用post,安全性高一些
5、表单的提交有两种方式:GET和POST,这两种方式的区别是什么?
一、指代不同
1、GET:从指定的资源请求数据。
2、POST:向指定的资源提交要被处理的数据
二、规则不同
1、GET: 请求可被缓存; 请求保留在浏览器历史记录中; 请求可被收藏为书签;请求不应在处理敏感数据时使用; 请求有长度限制; 请求只应当用于取回数据。
2、POST:请求不会被缓存; 请求不会保留在浏览器历史记录中; 不能被收藏为书签; 请求对数据长度没有要求。
三、数据要求不同
1、GET:当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。
2、POST:发送数据无限制。POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
参考资料来源:百度百科-HTTP请求
参考资料来源:百度百科-post
1、数据回去方式不同:
get是从服务器上获取数据,post是向服务器传送数据。
2、用户看到过程不同:
get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3、服务器端回去方式不同:
对于get方式,服务器端用Request.QueryString获取变量的值。
对于post方式,服务器端用Request.Form获取提交的数据。
4、传送大小不同:
get传送的数据量较小,不能大于2KB。
post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
5、安全性不同:
get安全性非常低。
post安全性较高。
get提交给目标地址后,可以在浏览器的地址栏看到提交的参数,就是问号后面那串
比如 a.php?id=3&type=1
post提交给目标地址后,浏览器地址栏里看不到提交的参数,因而比get方法安全,一般登录时候的密码等信息都需要post提交。
另外,get提交的参数有长度限制,post没有
GET 将表单数据附加到请求页面的URL地址后面。GET方法用来传送少量数据, URL的长度限制在8192个字符以内。如果发送的数据量太大,数据将被截断,从而导致意外的处理结果。
POST 在HTTP请求中嵌入表单数据。POST方法可用来发送大量数据,而且对于用户名、密码和信用卡等机密信息的发送,POST方法比GET方法更安全。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 604743761@qq..com 举报,一经查实,本站将立刻删除。
文章已关闭评论!