免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

[其他] 您了解HTTP么?工作中奇葩HTTP问题经验大征集!(获奖名单已公布-2014-7-9) [复制链接]

论坛徽章:
0
31 [报告]
发表于 2014-06-12 16:03 |只看该作者
流氓无产者 发表于 2014-06-10 09:24
很不错了,http是影响大家思维的几种协议之一

可以详细说说

论坛徽章:
62
洛杉矶湖人
日期:2015-02-10 09:56:11黑曼巴
日期:2016-06-28 17:41:282015-2016NBA季后赛纪念章
日期:2016-06-28 17:41:282016猴年福章徽章
日期:2016-02-18 15:30:34圣安东尼奥马刺
日期:2015-05-04 22:46:00菠菜神灯
日期:2015-05-04 22:35:07新奥尔良黄蜂
日期:2015-03-17 13:54:52明尼苏达森林狼
日期:2015-03-16 21:51:15萨克拉门托国王
日期:2015-03-02 16:10:58华盛顿奇才
日期:2015-03-02 16:10:58迈阿密热火
日期:2015-03-02 16:10:582016科比退役纪念章
日期:2016-06-28 17:41:28
32 [报告]
发表于 2014-06-13 11:23 |只看该作者
不了解。。。。
向往之

论坛徽章:
0
33 [报告]
发表于 2014-06-13 14:33 |只看该作者
常用的请求方式是GET和POST.

l         GET方式:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。

l         POST方式:用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项,Post被设计成用统一的方法实现下列功能:

1:对现有资源的解释;

2:向电子公告栏、新闻组、邮件列表或类似讨论组发信息;

3:提交数据块;

4:通过附加操作来扩展数据库 。

从上面描述可以看出,Get是向服务器发索取数据的一种请求;而Post是向服务器提交数据的一种请求,要提交的数据位于信息头后面的实体中

评分

参与人数 1可用积分 +1 收起 理由
platinum + 1 赞一个!

查看全部评分

论坛徽章:
0
34 [报告]
发表于 2014-06-13 20:31 来自手机 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
35 [报告]
发表于 2014-06-13 22:22 |只看该作者
回复 27# platinum


    1.1 默认作为长连接处理

1.0 默认作为短连接处理


貌似是这样的吧,好久没有搞过http了~~~

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
36 [报告]
发表于 2014-06-13 22:24 |只看该作者
本帖最后由 renxiao2003 于 2014-06-13 22:26 编辑

你了解 HTTP 吗?
答:自认为还比较了解HTTP啊。
你认为你真的很了解 HTTP 吗?
答:基本上很了解了。HTTP常用的方法有Post,Get,Delete等。
你知道 HTTP/1.0 和 HTTP/1.1 的区别吗?
答:1.0和1.1的区别主要有8点:1、可扩展性,2、缓存,3、带宽优化,4、长连接,5、消息传递,6、Host头域,7、错误提示和8、内容协商
你知道各种 HTTP 返回码的实际意义吗?
答:返回码分5大类:
1××   保留   
2××   表示请求成功地接收   
3××   为完成请求客户需进一步细化请求   
4××   客户错误   
5××   服务器错误   
纤细的说就是:
100 Continue
101 Switching Protocols
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
306 Unused
307 Temporary Redirect
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Menthod Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Reqeust Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Request Range Not Satisfialbe
417 Expectation Failed
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 Http Version Not Supported
你知道各种 Request Header 和 Response Header 里多种字段的含义吗?
答:HTTP Request的Header信息
1、HTTP请求方式
GET 向Web服务器请求一个文件
POST 向Web服务器发送数据让Web服务器进行处理
PUT 向Web服务器发送数据并存储在Web服务器内部
HEAD 检查一个对象是否存在
DELETE 从Web服务器上删除一个文件
CONNECT 对通道提供支持
TRACE 跟踪到服务器的路径
OPTIONS 查询Web服务器的性能
说明:
主要使用到“GET”和“POST”。
实例:
POST /test/tupian/cm HTTP/1.1
分成三部分:
(1)POST:HTTP请求方式
(2)/test/tupian/cm:请求Web服务器的目录地址(或者指令)
(3)HTTP/1.1: URI(Uniform Resource Identifier,统一资源标识符)及其版本
备注:
         在Ajax中,对应method属性设置。
2、Host
说明:
请求的web服务器域名地址
实例:
例如web请求URL:http://zjm-forum-test10.zjm.baidu.com:8088/test/tupian/cm
Host就为zjm-forum-test10.zjm.baidu.com:8088
3、User-Agent
说明:
HTTP客户端运行的浏览器类型的详细信息。通过该头部信息,web服务器可以判断到当前HTTP请求的客户端浏览器类别。
实例:
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
4、Accept
说明:
指定客户端能够接收的内容类型,内容类型中的先后次序表示客户端接收的先后次序。
实例:
         例如:
Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
备注:
在Prototyp(1.5)的Ajax代码封装中,将Accept默认设置为“text/javascript, text/html, application/xml, text/xml, */*”。这是因为Ajax默认获取服务器返回的Json数据模式。
在Ajax代码中,可以使用XMLHttpRequest 对象中setRequestHeader函数方法来动态设置这些Header信息。
5、Accept-Language
说明:
    指定HTTP客户端浏览器用来展示返回信息所优先选择的语言。
实例:
Accept-Language: zh-cn,zh;q=0.5
         这里默认为中文。
6、Accept-Encoding
说明:
         指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。表示允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。而这里设置的就是客户端浏览器所能够支持的返回压缩格式。
实例:
         Accept-Encoding: gzip,deflate
备注:
其实在百度很多产品线中,apache在给客户端返回页面数据之前,将数据以gzip格式进行压缩。
另外有关deflate压缩介绍:
http://man.chinaunix.net/newsoft ... od/mod_deflate.html
7、Accept-Charset
说明:
         浏览器可以接受的字符编码集。
实例:
         Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
8、Content-Type
说明:
显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性。
实例:
         Content-type: application/x-www-form-urlencoded;charset:UTF-8
有关Content-Type属性值可以如下两种编码类型:
(1)“application/x-www-form-urlencoded”: 表单数据向服务器提交时所采用的编码类型,默认的缺省值就是“application/x-www-form-urlencoded”。 然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。
(2)“multipart/form-data”: 在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。
当提交为单单数据时,可以使用“application/x-www-form-urlencoded”;当提交的是文件时,就需要使用“multipart/form-data”编码类型。
在Content-Type属性当中还是指定提交内容的charset字符编码。一般不进行设置,它只是告诉web服务器post提交的数据采用的何种字符编码。
         一般在开发过程,是由前端工程与后端UI工程师商量好使用什么字符编码格式来post提交的,然后后端ui工程师按照固定的字符编码来解析提交的数据。所以这里设置的charset没有多大作用。
9、Connection
说明:
表示是否需要持久连接。如果web服务器端看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点, web服务器需要在返回给客户端HTTP头信息中发送一个Content-Length(返回信息正文的长度)头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然 后在正式写出内容之前计算它的大小。
实例:
Connection: keep-alive
10、Keep-Alive
说明:
         显示此HTTP连接的Keep-Alive时间。使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
         以前HTTP请求是一站式连接,从HTTP/1.1协议之后,就有了长连接,即在规定的Keep-Alive时间内,连接是不会断开的。
实例:
Keep-Alive: 300
11、cookie
说明:
         HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。
12、Referer
说明:
包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
·服务器端返回HTTP头部信息
1、Content-Length
说明:
         表示web服务器返回消息正文的长度
2、Content-Type:
说明:
         返回数据的类型(例如text/html文本类型)和字符编码格式。
实例:
Content-Type: text/html;charset=utf-8
3、Date
说明:
         显示当前的时间
你又了解 SPDY 吗?
答:是 Google 开发的基于传输控制协议 (TCP) 的应用层协议 ,开发组正在推动 SPDY 成为正式标准(现为互联网草案)。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级,以及HTTP包头压缩。谷歌已经开发一个网络服务器原型机,以及支持SPDY协议的Chrome浏览器版本。

评分

参与人数 1可用积分 +4 收起 理由
platinum + 4 赞一个!

查看全部评分

论坛徽章:
0
37 [报告]
发表于 2014-06-13 22:26 |只看该作者
回复 33# hxksd


    你好,能解释以下关于put和post的区别吗?


我http的地方是在嵌入式开发中,用到post的地方不多,基本都是使用get/put,进行参数的set/get。

对于post的使用方式不是很清楚,我的理解感觉从功能实现上面post和put都差不多


因为我接触的onvif协议基本所有的方式都是使用的post但是和.cgi实现的功能差不多,而.cgi使用的基本就是get/put吧?


论坛徽章:
0
38 [报告]
发表于 2014-06-13 22:32 |只看该作者
各种浏览器对同一目的域名/地址可以同时保持几路长连接?

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
39 [报告]
发表于 2014-06-14 19:43 |只看该作者
最近主要写php的程序,并且做本地CDN服务器,系统用trafficserver,经常跟这些概念要交道。
顺便做个广告:TrafficServer是学习http非常好的一个平台,跟PHP不是一个级别的东西,特别是调试和写模块,不了解HTTP比较困难,要经常过去看rfc文档。里面大部分1.0和1.1的区别都做了相应的处理。

用nginx,在多级pass_proxy时遇到下级nginx不能实现基于域名的虚拟主机,并且记录不到客户端IP地址,仅记录到上一级nginx的IP,这时也要跟header们打交道,最常用的就是host和x-forward那一系列。

遇到比较奇葩的一件事,就是用php吐文件时,如果下载的文件名用utf-8编码,那么IE和FireFox会一个乱码一个不乱码,调了这个就乱了那个,仅输出charset是utf-8或者GB2312是不行的,只好用浏览器判断来解决,也只是解决大部分的情况,像360了之类的还是不好处理:

if ( strpos($_SERVER['HTTP_USER_AGENT'],"MSIE" ) ) $name = urlencode($name);

评分

参与人数 1可用积分 +1 收起 理由
platinum + 1 感谢分享

查看全部评分

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
40 [报告]
发表于 2014-06-14 19:48 |只看该作者
回复 27# platinum


    印象中trafficserver里面专门对这件事做了处理,好让1.0的系统也用keep-alive,代码不是很确定,但文档中至少提到过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP