post get


首先知道post方法比get方法安全。

1、Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如[url]http://www.mdm.com/test.asp?name=asd&password=sad[/url],数据都会 直接显示在 url 上,就像用户点击一个链接一样;Post 方法通过 HTTP post 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由 action 属性能所指的程序处理,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理。

2、 Get 方式需要使用 Request.QueryString 来取得变量的值;而 Post 方式通过 Request.Form 来访问提交的内容


3、Get 方式传输的数据量非常小,一般限制在 2 KB 左右,但是执行效率却比 Post 方法好;而 Post 方式传递的数据量相对较大,它是等待服务器来读取数据,不过也有字节限制,这是为了避免对服务器用大量数据进行恶意攻击,根据微软方面的说法,微软对用 Request.Form() 可接收的最大数据有限制,IIS 4 中为 80 KB 字节,IIS 5 中为 100 KB 字节

建议:除非你肯定你提交的数据可以一次性提交,否则请尽量用 Post 方法


4、Get 方式提交数据,会带来安全问题,比如一个登陆页面,通过 Get 方式提交数据时,用户名和密码将出现在 URL 上,如果页面可以被缓存或者其他人可以访问客户这台机器,就可以从历史记录获得该用户的帐号和密码,所以表单提交建议使用 Post 方法;Post 方法提交的表单页面常见的问题是,该页面如果刷新的时候,会弹出一个对话框

建议:出于安全性考虑,建议最好使用 Post 提交数据



在表单里使用“post”和“get”有什么区别


Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,postget方法在使用上至少有两点不同:

1Get方法通过URL请求来传递用户的输入。Post方法通过另外的形式。
2
Get方式的提交你需要用Request.QueryString来取得变量的值,而Post方式提交时,你必须通过Request.Form来访问提交的内容。


提示

通过get方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过get方法提交数据时,用户名和密码将出现在URL上。如果:
1、登陆页面可以被浏览器缓存;
2、其他人可以访问客户的这台机器。
那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,get方法会带来严重的安全性问题。
建议
Form中,建议使用post方法。






<think>好的,我现在需要回答用户关于HTTP POSTGET方法的区别及使用场景的问题。首先,我应该回顾一下自己之前学过的HTTP相关知识,确保信息的准确性。 我记得GETPOST是HTTP中最常用的两种请求方法。它们的区别主要在于数据传输方式、安全性、缓存以及使用场景等方面。首先,GET请求的参数会附加在URL后面,通过查询字符串传递,而POST数据则是放在请求体中,不会直接暴露在URL中。因此,POST更适合传输敏感信息,比如密码,而GET适合非敏感数据的传输。 然后,关于数据长度限制,GET由于URL长度限制(通常由浏览器服务器设定),传输的数据量有限,而POST可以发送大量数据,比如文件上传。另外,GET请求可以被缓存、保留在浏览器历史记录中,而POST一般不会被缓存,也不保留在历史记录里。 安全性方面,虽然POST数据不在URL中显示,但如果不使用HTTPS,两者都不安全,只是POST相对隐蔽一些。此外,GET是幂等的,意味着多次请求效果相同,适合获取数据,而POST非幂等,通常用于提交数据,比如表单提交。 接下来需要检查是否有遗漏点。比如幂等性的概念是否正确,GET的幂等性指的是多次请求不会改变资源状态,而POST每次提交可能会创建新资源,所以不是幂等的。这一点需要明确说明。 使用场景方面,GET用于获取数据,比如搜索、分页,POST用于提交数据,比如登录、注册。可能需要举一些例子,比如GET用于获取用户信息,POST用于提交表单。 然后,我需要参考提供的引用资料,确保回答与资料一致。引用[1]提到GETPOST的区别以及使用场景,引用[2]则详细解释了三种方法,但用户主要关注POSTGET。需要结合这些资料中的观点,比如接口设计的清晰性和系统维护性。 最后,生成相关问题时要围绕主题,可能涉及性能优化、安全性、其他HTTP方法比较等。比如,POST安全性如何保证,或者PUT和POST的区别。 现在需要组织语言,结构清晰,分点说明区别和使用场景,并附上代码示例(如果有的话)。不过用户的问题可能不需要代码,但示例中的快速排序有代码,可能需要判断是否必要。这里用户没有提到需要代码,所以可能不需要。 确认LaTeX格式是否正确,比如行内公式用$...$,独立公式用$$...$$,但当前问题可能不涉及数学公式,所以这部分可能不适用,但需要确保其他格式要求,如引用标识。 总结步骤: 1. 分别介绍GETPOST的特点。 2. 对比它们的区别:数据传输位置、数据长度、缓存、安全性、幂等性。 3. 使用场景举例。 4. 引用提供的资料。 5. 生成相关问题。 需要检查是否有错误,比如是否GET真的不能发送body数据?根据HTTP标准,GET也可以有body,但服务器可能忽略,所以实际使用中GET数据放在URL,而POST放在body。这一点需要准确说明。 另外,关于幂等性,GET是幂等的,POST不是,正确。幂等性是指多次执行同一请求的效果与一次执行相同,GET不会改变资源状态,所以是幂等的,而POST每次可能创建新资源,所以不是。 最后,确保回答用中文,结构清晰,分点说明,自然添加引用标识。</think>### HTTP POST vs GET 方法区别及使用场景 #### 一、核心区别 1. **数据传输位置** - **GET**: 参数通过URL的查询字符串传递,例如:`/search?keyword=test`,数据直接可见[^1]。 - **POST**: 数据放在请求体中,不会暴露在URL中,适合传输敏感信息(如密码、文件)[^2]。 2. **数据长度限制** - **GET**: 受URL长度限制(通常由浏览器服务器设定,如2048字符)。 - **POST**: 理论上无限制,适合传输大量数据(如表单、文件上传)。 3. **缓存与历史记录** - **GET**: 可被浏览器缓存,并保留在历史记录中。 - **POST**: 默认不缓存,且不保留在历史记录中。 4. **安全性** - **GET**: 数据URL中明文传输,易被窃取或记录(如浏览器历史、服务器日志)[^1]。 - **POST**: 数据在请求体中,安全性略高,但仍需配合HTTPS加密。 5. **幂等性** - **GET**: 幂等(多次请求结果一致),仅用于获取数据,不修改资源。 - **POST**: 非幂等(多次提交可能产生不同结果),通常用于创建或修改资源。 --- #### 二、使用场景 - **GET的典型场景**: 1. 获取数据(如商品列表、搜索建议)。 2. 分页查询(如`/articles?page=2`)。 3. 幂等操作(如刷新页面不影响数据状态)。 - **POST的典型场景**: 1. 提交表单(如用户注册、登录)。 2. 上传文件或图片。 3. 非幂等操作(如支付、创建订单)。 --- #### 三、代码示例(HTTP请求对比) ```http # GET请求示例(参数在URLGET /api/users?id=123 HTTP/1.1 Host: example.com # POST请求示例(参数在Body) POST /api/users HTTP/1.1 Host: example.com Content-Type: application/json { "name": "Alice", "age": 25 } ``` --- #### 四、总结 - **选择GET时**:需获取数据且无需修改服务器状态。 - **选择POST时**:需提交敏感数据或执行非幂等操作。 - **安全性补充**:即使使用POST,仍需通过HTTPS加密确保传输安全。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值