手机上网出现ajax post data格式data是什么意思

不该那么任性,还是用用data,分分GET和POST_PHP教程_ThinkSAAS
不该那么任性,还是用用data,分分GET和POST
不该那么任性,还是用用data,分分GET和POST
内容来源: 网络
承蒙学长厚爱,一直想加入PureWeber去锻炼锻炼自己,不管怎样,web也算是我的一个爱好,不如试着去做做,以后也好装13。至于以后的职业,就是另外一说了。
不是所有的人都能进PureWeber,也不是所有的人都有资格去“享受”那个机房,也不是所有的人都有毅力一直呆在那里。
回归正题,GET与POST在前端数据发送至后端的问题中遇到了,之前也曾涉及到这个问题(大一用Django做通讯录),不过在老师的建议,选用了比较简单的GET,也没有多想背后的原因,GET就GET了。夏季学期交的JAVA大作业就一个Access的图书管理系统,水水的3000行代码,日期又是用string储存,就结束了夏季的学习。
心想着,这也算是自己的一个处女座了(之前的东西太少,各种“借鉴”),把该处理的都处理掉,在28号之前交上他,说不懂PureWeber会相中我~
这次作业,打算好好的做一下,所有的东西自己实现一下,不用任何框架(在需要的时候F12一下),用还没掌握基础语法的PHP做一下,外加就是HTML和CSS了,javascript目前处于HelloWord的状态,我现在也就是验证一下表达或者;location一下域名指向。数据库用Mysql,之前只用过Access老老实实做了一下Java ODBC连接的,和Mysql对比,明显发现Access的图像界面特别好,但是众所周知,Mysql免费+速度快就是老大哥了。
选择PHP的原因之前的Django学的不是很好,PHP又是用了半年得WordPress用的语言,假期也看了一下PHP怎么echo出helloword,就决定用它了。PHP只是看了基础语法,然后与Mysql连接的这块儿自然是完全不知(虽然基础的sql连接基本都差不多),在汇编考试的前2个晚上去w3cschool和一个水水的mooc站看了一下视频(网站讲的很水,但极其适合入门(我不会说我现在的HTML与CSS是在上面学了两个小时水平),想知道地址的可以在下面留言~),就觉得基本的差不多了,本来也无非就是连接,执行,断开。
觉得差不多之后就该付之行动,什么都不会的萌芽级小白,也就要开始了传说中的处女作了~目前已经完成了登录(这个水,我只是PHP验证了一下,就一个用户,实在不行就加个注册吧),然后created, update, delete, add的基础功能,都没有加sql验证,所以注入自然(其实是个坑,夏季学期的那个也没有做相关防护)。现在剩的功能不是很多了,毕竟是入门级,大多都是我这样的小白级别,还是分类检索(这个应该很好做,加个where就行),keyup响应(估计也不难吧,可以不用AJAX), 还有一个是真的不清楚的分页(其实是由于对PHP不怎么了解,所以没技术加没思路)。
今天做了2个小时,遇到了前面提到的GET与POST操作,于是决定好好的查一下资料,毕竟在安全方面还是很重要的(GET没有POST安全这个必须知道)。
以下内容大多来源网络:
get是从服务器上获取数据,post是向服务器传送数据。
get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
以下来自hyddd博客:
  Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
  1.根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
  (1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
  * 注意:这里安全的含义仅仅是指是非修改信息。
  (2).幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下幂等这个概念:
  幂等(idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。
  幂等有一下几种定义:
  对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs(a))。
  对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即max(x,x) = x。
看完上述解释后,应该可以理解GET幂等的含义了。
  但在实际应用中,以上2条规定并没有这么严格。引用别人文章的例子:比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。从根本上说,如果目标是当用户打开一个链接时,他可以确信从自身的角度来看没有改变资源即可。
  2.根据HTTP规范,POST表示可能修改变服务器上的资源的请求。继续引用上面的例子:还是新闻以网站为例,读者对新闻发表自己的评论应该通过POST实现,因为在评论提交后站点的资源已经不同了,或者说资源被修改了。
  上面大概说了一下HTTP规范中GET和POST的一些原理性的问题。但在实际的做的时候,很多人却没有按照HTTP规范去做,导致这个问题的原因有很多,比如说:
  1.很多人贪方便,更新资源时用了GET,因为用POST必须要到FORM(表单),这样会麻烦一点。
  2.对资源的增,删,改,查操作,其实都可以通过GET/POST完成,不需要用到PUT和DELETE。
  3.另外一个是,早期的Web MVC框架设计者们并没有有意识地将URL当作抽象的资源来看待和设计,所以导致一个比较严重的问题是传统的Web MVC框架基本上都只支持GET和POST两种HTTP方法,而不支持PUT和DELETE方法。
  * 简单解释一下MVC:MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。
  以上3点典型地描述了老一套的风格(没有严格遵守HTTP规范),随着架构的发展,现在出现REST(Representational State Transfer),一套支持HTTP规范的新风格,这里不多说了,可以参考《RESTful Web Services》。
  说完原理性的问题,我们再从表面现像上面看看GET和POST的区别:
  1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
  POST把提交的数据则放置在是HTTP包的包体中。
  2."GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据,IIS4中最大为80KB,IIS5中为100KB"??!
  以上这句是我从其他文章转过来的,其实这样说是错误的,不准确的:
  (1).首先是"GET方式提交的数据最多只能是1024字节",因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
  注意这是限制是整个URL长度,而不仅仅是你的参数值数据长度。[见参考资料5]
  (2).理论上讲,POST是没有大小限制的,HTTP协议规范也没有进行大小限制,说“POST数据量存在80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。
  对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。
  由这个延伸出去,对于IIS 6.0,微软出于安全考虑,加大了限制。我们还需要注意:
     1).IIS 6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB。
     2).IIS 6.0默认上传文件的最大大小是4MB。
     3).IIS 6.0默认最大请求头是16KB。
  IIS 6.0之前没有这些限制。[见参考资料5]
  所以上面的80K,100K可能只是默认值而已(注:关于IIS4和IIS5的参数,我还没有确认),但肯定是可以自己设置的。由于每个版本的IIS对这些参数的默认值都不一样,具体请参考相关的IIS配置文档。
  3.在ASP中,服务端获取GET请求参数用Request.QueryString,获取POST请求参数用Request.Form。在JSP中,用request.getParameter("XXXX")来获取,虽然jsp中也有request.getQueryString()方法,但使用起来比较麻烦,比如:传一个test.jsp?name=hyddd&password=hyddd,用request.getQueryString()得到的是:name=hyddd&password=hyddd。在PHP中,可以用$_GET和$_POST分别获取GET和POST中的数据,而$_REQUEST则可以获取GET和POST两种请求中的数据。值得注意的是,JSP中使用request和PHP中使用$_REQUEST都会有隐患,这个下次再写个文章总结。
  4.POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。
  总结一下,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!
  纯属hyddd个人总结,如有错漏请指出。:&
参考资料:
题目中的data,就是数据库中的一个问题,比较简单,是我的语法问题,在HIT阿里巴巴群里得到了学长的指导~
原文地址:
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信iOS开发中的网络请求
招聘信息:
今天来说说关于iOS开发过程中的网络请求。关于网络请求的重要性我想不用多说了吧。对于移动客户端来说,网络的重要性不言而喻。常见的网络请求有同步GET, 同步POST, 异步GET, 异步POST。今天来看一下四种网络请求的实现方式。一、同步GET//&1.将网址初始化成一个OC字符串对象
NSString&*urlStr&=&[NSString&stringWithFormat:@"%@?query=%@&region=%@&output=json&ak=6E823f587c95f9b99295",&kBusinessInfoURL,&@"银行",&@"济南"];
//&如果网址中存在中文,进行URLEncode
NSString&*newUrlStr&=&[urlStr&stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//&2.构建网络URL对象,&NSURL
NSURL&*url&=&[NSURL&URLWithString:newUrlStr];
//&3.创建网络请求
NSURLRequest&*request&=&[NSURLRequest&requestWithURL:url&cachePolicy:NSURLRequestReloadIgnoringLocalCacheData&timeoutInterval:10];
//&创建同步链接
NSURLResponse&*response&=&
NSError&*error&=&
NSData&*data&=&[NSURLConnection&sendSynchronousRequest:request&returningResponse:&response&error:&error];当创建好同步链接以后, 就可以采用相应的方法进行解析。下面创建异步连接也是一样的。二、同步POST//&1.根据网址初始化OC字符串对象
&&&&NSString&*urlStr&=&[NSString&stringWithFormat:@"%@",&kVideoURL];
&&&&//&2.创建NSURL对象
&&&&NSURL&*url&=&[NSURL&URLWithString:urlStr];
&&&&//&3.创建请求
&&&&NSMutableURLRequest&*request&=&[NSMutableURLRequest&requestWithURL:url];
&&&&//&4.创建参数字符串对象
&&&&NSString&*parmStr&=&@"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10";
&&&&//&5.将字符串转为NSData对象
&&&&NSData&*pramData&=&[parmStr&dataUsingEncoding:NSUTF8StringEncoding];
&&&&//&6.设置请求体
&&&&[request&setHTTPBody:pramData];
&&&&//&7.设置请求方式
&&&&[request&setHTTPMethod:@"POST"];
&&&&//&创建同步链接
&&&&NSData&*data&=&[NSURLConnection&sendSynchronousRequest:request&returningResponse:nil&error:nil];三、异步GET&&&&NSString&*urlStr&=&[NSString&stringWithFormat:@".cn/56/13/4.jpg"];
&&&&NSString&*newStr&=&[urlStr&stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
&&&&NSURL&*url&=&[NSURL&URLWithString:newStr];
&&&&NSURLRequest&*requst&=&[NSURLRequest&requestWithURL:url&cachePolicy:NSURLRequestReloadIgnoringLocalCacheData&timeoutInterval:10];
&&&&//异步链接(形式1,较少用)
&&&&[NSURLConnection&sendAsynchronousRequest:requst&queue:[NSOperationQueue&mainQueue]&completionHandler:^(NSURLResponse&*response,&NSData&*data,&NSError&*connectionError)&{
&&&&&&&&self.imageView.image&=&[UIImage&imageWithData:data];
&&&&&&&&//&解析
&&&&&&&&NSDictionary&*dic&=&[NSJSONSerialization&JSONObjectWithData:data&options:NSJSONReadingMutableContainers&error:nil];
&&&&&&&&NSLog(@"%@",&dic);
&&&&}];四、异步POST//&POST请求
&&&&NSString&*urlString&=&[NSString&stringWithFormat:@"%@",kVideoURL];
&&&&//创建url对象
&&&&NSURL&*url&=&[NSURL&URLWithString:urlString];
&&&&//创建请求
&&&&NSMutableURLRequest&*request&=&[NSMutableURLRequest&requestWithURL:url&cachePolicy:NSURLRequestReloadIgnoringLocalCacheData&timeoutInterval:10];
&&&&//创建参数字符串对象
&&&&NSString&*parmStr&=&[NSString&stringWithFormat:@"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10"];
&&&&//将字符串转换为NSData对象
&&&&NSData&*data&=&[parmStr&dataUsingEncoding:NSUTF8StringEncoding];
&&&&[request&setHTTPBody:data];
&&&&[request&setHTTPMethod:@"POST"];
&&&&//创建异步连接(形式二)
&&&&[NSURLConnection&connectionWithRequest:request&delegate:self];一般的,当创建异步连接时, 很少用到第一种方式,经常使用的是代理方法。关于NSURLConnectionDataDelegate,我们经常使用的协议方法为一下几个://&服务器接收到请求时
-&(void)connection:(NSURLConnection&*)connection&didReceiveResponse:(NSURLResponse&*)response
//&当收到服务器返回的数据时触发,&返回的可能是资源片段
-&(void)connection:(NSURLConnection&*)connection&didReceiveData:(NSData&*)data
//&当服务器返回所有数据时触发,&数据返回完毕
-&(void)connectionDidFinishLoading:(NSURLConnection&*)connection
//&请求数据失败时触发
-&(void)connection:(NSURLConnection&*)connection&didFailWithError:(NSError&*)error
&&&&NSLog(@"%s",&__FUNCTION__);
}最后,分析一下这几种呢网络请求的区别。GET请求和POST请求的区别:1. GET请求的接口会包含参数部分,参数会作为网址的一部分,服务器地址与参数之间通过 ? 来间隔。POST请求会将服务器地址与参数分开,请求接口中只有服务器地址,而参数会作为请求的一部分,提交后台服务器。2. GET请求参数会出现在接口中,不安全。而POST请求相对安全。3.虽然GET请求和POST请求都可以用来请求和提交数据,但是一般的GET多用于从后台请求数据,POST多用于向后台提交数据。同步和异步的区别:同步链接:主线程去请求数据,当数据请求完毕之前,其他线程一律不响应,会造成程序就假死现象。异步链接:会单独开一个线程去处理网络请求,主线程依然处于可交互状态,程序运行流畅。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量3670点击量3515点击量3499点击量3344点击量3059点击量3033点击量2841点击量2769点击量2629
&2016 Chukong Technologies,Inc.
京公网安备891458人阅读
JAVA(14)
最近做项目时,发现手机客户端通过http协议post方式上传数据到服务端,在服务器端通过request.getInputStream()能获取到相应的数据,但用request.getParameter()却获取不到数据。这是怎么回事呢,后来发现这种情况跟form表单的属性 enctype有关系。
HTML中的form表单有一个关键属性 enctype=application/x-www-form-urlencoded 或multipart/form-data。
1、enctype=&application/x-www-form-urlencoded&是默认的编码方式,当以这种方式提交数据时,HTTP报文中的内容是:
&span style=&font-size:&&POST /post_test.php HTTP/1.1
Accept-Language: zh-CN
User-Agent: Mozilla/4.0
Content-Type: application/x-www-form-urlencoded
Host: 192.168.12.102
Content-Length: 42
Connection: Keep-Alive
Cache-Control: no-cache
title=test&content=%B3%AC%BC%B6%C5%AE%C9%FA&submit=post+article
Servlet的API提供了对这种编码方式解码的支持,只需要调用ServletRequest 类中的getParameter()方法就可以得到表单中提交的数据。
2、在传输大数据量的二进制数据时,必须将编码方式设置成enctype=&multipart/form-data&,当以这种方式提交数据时,HTTP报文中的内容是:
&span style=&font-size:&&POST /post_test.php?t=1 HTTP/1.1
Accept-Language: zh-CN
User-Agent: Mozilla/4.0
Content-Type: multipart/form- boundary=---------------------------7dbf
Accept-Encoding: gzip, deflate
Host: 192.168.12.102
Content-Length: 345
Connection: Keep-Alive
Cache-Control: no-cache
-----------------------------7dbf
Content-Disposition: form- name=&title&
-----------------------------7dbf
Content-Disposition: form- name=&content&
-----------------------------7dbf
Content-Disposition: form- name=&submit&
post article
-----------------------------7dbf--&/span&
如果以这种方式提交数据就要用request.getInputStream()或request.getReader()来获取提交的数据,用 request.getParameter()是获取不到提交的数据的。
最后注意request.getParameter()、request.getInputStream()、request.getReader()这三种方法是有冲突的,因为流只能被读一次。
当form表单内容采用enctype=application/x-www-form-urlencoded编码时,先通过调用request.getParameter()方法获取数据后,再调用request.getInputStream()或request.getReader()已经获取不到流中的内容了,因为在调用 request.getParameter()时系统可能对表单中提交的数据以流的形式读了一次,反之亦然。
当form表单内容采用enctype=multipart/form-data编码时,调用request.getParameter()获取不到数据,即使已经调用了request.getParameter()方法也可以再通过调用request.getInputStream()或request.getReader()获取表单中的数据,但request.getInputStream()和request.getReader()在同一个响应中是不能混合使用的,如果混合使用会抛异常的。
来源:http://well-/blog/1543807
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:100698次
积分:1636
积分:1636
排名:千里之外
原创:63篇
转载:24篇
(2)(1)(3)(4)(1)(1)(1)(2)(1)(2)(1)(1)(1)(1)(2)(5)(1)(1)(5)(1)(4)(3)(2)(1)(7)(6)(4)(6)(4)(4)(4)(3)(2)

我要回帖

更多关于 ajax post data格式 的文章

 

随机推荐