httprequest get post的POST和GET的区别

HTTP&定义了与服务器交互的不同方法,最基本的方法是&GET&和&POST(Ajax开发,关心的只有GET请求和POST请求)。
(1)在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML
HEADER内提交。
(2)GET方式提交的数据最多只能有1024
Byte,而POST则没有此限制。
(3)安全性问题。正如在(1)中提到,使用&Get&的时候,参数会显示在地址栏上,而&Post&不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用&post为好。
表单提交中get和post方式的区别归纳如下几点:
(1)get是从服务器上获取数据,post是向服务器传送数据。
(2)对于表单的提交方式,在服务器端只能用Request.QueryString来获取Get方式提交来的数据,用Post方式提交的数据只能用Request.Form来获取。
(3)一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题。比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。但是在分页程序中,用Get方式就比用Post好。
HTTP POST和GET的区别
1、HTTP 只有POST和GET 两种命令模式;
2、&POST 是被设计用来向上放东西的,而GET是被设计用来从服务器取东西的,GET也能够向服务器传送较少的数据,而Get之所以也能传送数据,只是用来设计告诉 服务器,你到底需要什么样的数据.POST的信息作为HTTP 请求的内容,而GET是在HTTP 头部传输的;
3、POST与GET在HTTP 中传送的方式不同,GET的参数是在HTTP 的头部传送的,而Post的数据则是在HTTP 请求的内容里传送;
4、POST传输数据时,不需要在URL中显示出来,而GET方法要在URL中显示;
5、 GET方法由于受到URL长度的限制,只能传递大约1024字节;POST传输的数据量大,可以达到2M,而根据微软方面的说法,微软对用 Request.Form() 可接收的最大数据有限制,IIS 4 中为 80 KB 字节,IIS 5 中为 100 KB 字节;
6、SOAP是依赖于HTTP POST模式实现的;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:12174次
排名:千里之外
原创:25篇
转载:30篇
(2)(1)(2)(1)(1)(2)(1)(2)(2)(6)(3)(2)(1)(3)(9)(11)(7)浅析HTTP中POST和GET区别并用Python模拟其响应和请求 - 推酷
浅析HTTP中POST和GET区别并用Python模拟其响应和请求
最近在几周在做手游崩溃信息收集和上传,拿到崩溃信息后,使用的是HTTP的POST方法上传到公司共用的服务器的,因此做简单总结。本文首先简单介绍了HTTP协议,主要说明了POST方法和GET方法的区别;然后用Python实现了 对POST方法和GET方法的响应;最后用Python模拟了POST方法和GET方法的请求。
HTTP协议简介
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,简单来说它是一个应用层的协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。HTTP是一个无状态的协议,即同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端,为了解决这个问题,Web程序引入了Cookie机制来维护状态。
HTTP协议通常基于TCP协议来实现的,有时也基于于TLS或SSL协议(这个两个协议也是基于TCP协议来说实现)来实现,这个时候,就成了我们常说的HTTPS,每次HTTP操作都至少有下面几个过程:首先客户端与服务端建立连接;建立建立后,客户端按照协议格式发送请求;服务端接到请求后,同样按照某个格式返回响应数据;最后客户端与服务端断开连接。
通常我们打开一个网页,需要浏览器发送多次请求,因为一个网页中可能引用了其他文件,比如图片等文件,这时候浏览器会自动再次发送请求去获取图片等数据,直到网页上的数据被完全显示出来。
POST和GET区别
HTTP协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作,其中最常见请求方式是GET和POST,并且现在浏览器一般只支持GET和POST方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息,他们之间主要区别如下:
1)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的,这里安全是指该操作用于获取信息而非修改信息,幂等是指对同一URL的多个请求应该返回同样的结果(这一点在实质实现时,可能并不满足);
POST表示可能修改变服务器上的资源的请求。
2)GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,
则直接把字符串用BASE64编码;POST把提交的数据则放置在是HTTP包的包体中。
3)因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系,理论上URL长度是没有限制的,即HTTP协议没有规定URL的长度,但在实质中,特定的浏览器可能对这个长度做了限制;理论上POST也是没有大小限制的,HTTP协议规范也没有进行大小限制,但在服务端通常会对这个大小做一个限制,当然这个限制比GET宽松的多,即使用POST可以提交的数据量比GET大得多。
最后,网上有人说,POST的安全性要比GET的安全性高,实质上POST跟GET都是明文传输,这可以通过类似WireShark工具看到。总之,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求。
POST和GET方法响应Python实现
下面代码实现对POST方法和GET方法的响应:
#!/usr/bin/python
#coding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
from os import curdir, sep
import cgi
import logging
import time
PORT_NUMBER = 8080
RES_FILE_DIR = &.&
class myHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path==&/&:
self.path=&/index_example3.html&
#根据请求的文件扩展名,设置正确的mime类型
sendReply = False
if self.path.endswith(&.html&):
mimetype='text/html'
sendReply = True
if self.path.endswith(&.jpg&):
mimetype='image/jpg'
sendReply = True
if self.path.endswith(&.gif&):
mimetype='image/gif'
sendReply = True
if self.path.endswith(&.js&):
mimetype='application/javascript'
sendReply = True
if self.path.endswith(&.css&):
mimetype='text/css'
sendReply = True
if sendReply == True:
#读取相应的静态资源文件,并发送它
f = open(curdir + sep + self.path, 'rb')
self.send_response(200)
self.send_header('Content-type',mimetype)
self.end_headers()
self.wfile.write(f.read())
except IOError:
self.send_error(404,'File Not Found: %s' % self.path)
def do_POST(self):
logging.warning(self.headers)
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST',
'CONTENT_TYPE':self.headers['Content-Type'],
file_name = self.get_data_string()
path_name = '%s/%s.log' % (RES_FILE_DIR,file_name)
fwrite = open(path_name,'a')
fwrite.write(&name=%s\n& % form.getvalue(&name&,&&))
fwrite.write(&addr=%s\n& % form.getvalue(&addr&,&&))
fwrite.close()
self.send_response(200)
self.end_headers()
self.wfile.write(&Thanks for you post&)
def get_data_string(self):
now = time.time()
clock_now = time.localtime(now)
cur_time = list(clock_now)
date_string = &%d-%d-%d-%d-%d-%d& % (cur_time[0],
cur_time[1],cur_time[2],cur_time[3],cur_time[4],cur_time[5])
return date_string
server = HTTPServer(('', PORT_NUMBER), myHandler)
print 'Started httpserver on port ' , PORT_NUMBER
server.serve_forever()
except KeyboardInterrupt:
print '^C received, shutting down the web server'
server.socket.close()
对于上面POST响应实现,值得一提的是,若客户端发送过来一个文件,则方法getvalue()会把整个文件内容读入内存,这可能不是我们想要的,这时可以使用form的属性file或filename,比如下面代码,计算上传代码的行数:
fileitem = form[&userfile&]
if fileitem.file:
linecount = 0
line = fileitem.file.readline()
if not line: break
linecount = linecount + 1
POST和GET方法请求Python实现
下面代码实现了GET方法的请求:
#!/usr/bin/env python
#coding=utf8
import httplib
httpClient = None
httpClient = httplib.HTTPConnection('localhost', 8080, timeout=30)
httpClient.request('GET', '/test0.html')
#response是HTTPResponse对象
response = httpClient.getresponse()
print response.status
print response.reason
print response.read()
except Exception, e:
if httpClient:
httpClient.close()
下面代码实现了POST方法的请求:
#!/usr/bin/env python
#coding=utf8
import httplib, urllib
httpClient = None
params = urllib.urlencode({'name': 'Maximus', 'addr': &GZ&})
headers = {&Content-type&: &application/x-www-form-urlencoded&
, &Accept&: &text/plain&}
httpClient = httplib.HTTPConnection(&localhost&, 8080, timeout=30)
httpClient.request(&POST&, &/test0.html&, params, headers)
response = httpClient.getresponse()
print response.status
print response.reason
print response.read()
print response.getheaders() #获取头信息
except Exception, e:
if httpClient:
httpClient.close()
/TankXiao/archive//2342672.html
/hyddd/archive//1426026.html
http://www.acmesystems.it/python_httpserver
//how-to-dump-post-request-with-python/
/python-httplib-get-and-post/
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致详解HTTP中GET和POST的区别_百度知道Loading .....
Copyright 2006 Adrian Holovaty and Jacob Kaplan-Moss.This
work is licensed under the .
Hosting graciously provided by
Chinese translate hosting by .服务端文档:
/my/register.php
参数说明: username 用户名 password 密码 email 邮箱
成功返回值:
"code": "registered",
"message": "注册成功了,进入个人空间"
"code": "user_name_already_exists",
"message": "用户名已经存在"
导入的包:
#import "ASIHttpRequest.h"
#import "ASIFormDataRequest.h"
注册方法代码
- (void) registerToSns:(id)sender {
// http://192.168.100.1/sns/my/user_list.php?format=json
// HTTP协议 POST & GET
NSString *username = usernameField.
NSString *password = passwordField.
NSString *email = emailField.
#if 0 // GET
NSString *s = [NSString stringWithFormat:
@"%@/my/register.php?username=%@&password=%@&email=%@",
QFSNS_HOST,
username, password, email];
NSLog(@"sns is %@", s);
NSURL *url = [NSURL URLWithString:s];
ASIHTTPRequest *r = [ASIHTTPRequest requestWithURL:url];
NSString *s = [NSString stringWithFormat:
@"%@/my/register.php?format=xml", QFSNS_HOST];
http://192.168.100.1/sns/my/user_list.php
NSURL *url = [NSURL URLWithString:s];
ASIFormDataRequest *r = [ASIFormDataRequest requestWithURL:url];
// 创建POST请求 用了ASIFormDataRequest也必须是有setPostValue才被服务端认为是post方式,无参数时setPost:nil
[r setPostValue:username forKey:@"username"];
[r setPostValue:password forKey:@"password"];
[r setPostValue:email forKey:@"email"];   [r setRequestMethod:@"POST"];//设置数据接受方式为post
// 收到{"code":"registered","message":"\u6ce8\u518c\uf\u4e86\uff0c\u8fdb\ua\u4eba\u7a7a\u95f4","m_auth":"07caUz7QkiKUd2dlFgU3kA8DVlnEW8DStHdHDhLj6aTHbEZ\/LScPvAVu8WML\/0TITVGL\/NhKXw\/JlISU6QVrLQ"}
r.delegate =
r.tag = 100;
[r startAsynchronous];
  一般在浏览器中输入网址访问资源都是通过GET方式;
  而在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交。
  一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。GET一般用于获取/查询 资源信息,而POST一般用于更新 资源信息。&
  其他差别:
    1. GET使用URL或Cookie传参。而POST将数据放在BODY中。
    2. GET的URL会有长度上的限制,则POST的数据则可以非常大。
    3. POST比GET安全,因为数据在地址栏上不可见。
阅读(...) 评论()}

我要回帖

更多关于 php post get request 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信