Http协议&JSONP

 

1、             HTTP协议

超文本传送协议HTTP是基于TCP/IP上应用层协议。HTTP报文下面是一个标准的浏览器发出的HTTP请求头

用FF访问淘宝Detail的一个HTTP请求头:

GET /item.htm?id=5503555042&ad_id=&am_id=&cm_id=&pm_id= HTTP/1.1

Host: item.taobao.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,zh;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Cookie: ck1=; tg=0; _cc_=W5iHLLyFfA%3D%3D; t=ccba238f8728377450a0a27cbb5b565a; nt=VT5L2FSpcz78qhigpLZ9LrfSg0K7mPotdeOv4R3iPvxdTwC0KBNSmA%3D%3D; tracknick=%5Cu4EC1%5Cu901A; ssllogin=; cna=Me4mBaAu8H4CAeIdAHmWi0GR; x=e%3D1%26p%3Dtdog%26s%3D0%26c%3D1%26f%3D0%26g%3D0%26t%3D0%26l%3D-1%26_ll%3D0; wt_=1; wd=14a58be9b7f8de0c653105eb15d7a2e8_0db2%2C5a03c24080f703a37f3728545c5168e9_0db1; lzstat_uv=3232052811177763256|1296239; cookie2=1b2432c744aa5c3eaf580cc06350c2a9; uc1=cookie14=UoMz0TST369pOQ%3D%3D; v=0; _lang=zh_CN:GBK; lastgetwwmsg=MTI4NTY0MDkyNA%3D%3D; _sv_=0; _nk_=%5Cu4EC1%5Cu901A; _l_g_=Ug%3D%3D; coo

kie1=UNk2SCT0jlXKqZ4rKvUV1yIewP%2FHLzYwMnmh0pCwNMY%3D; _wwmsg_=0%2C0; cookie17=UoH2ijEGbUO%2F; _tb_token_=37ebb3853ef37; tlut=UoMz0TSUmXk%2FOQ%3D%3D; __utma=6906807.1533412790.1285641169.1285641169.1285641169.1; __utmb=6906807.1.10.1285641169; __utmc=6906807; __utmz=6906807.1285641169.1.1.utmcsr=jianghu.taobao.com|utmccn=(referral)|utmcmd=referral|utmcct=/u/NDg3ODk3NTM5/front.htm

Pragma: no-cache

Cache-Control: no-cache

 

 

请求头以2个\r\n结束。用Socket方式连上item.taobao.com ,把上面字符串写向服务器就可以得到下面的影响结果

上面对应的每个属性的意义在附件中的HTTP协议中都有说明

 

Detail的响应HTTP头:

HTTP/1.1 200 OK       HTTP版号 返回的状态码

Date: Tue, 28 Sep 2010 01:33:07 GMT  时间

Server: Apache

X-Powered-By: Servlet 2.4; JBoss-4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)/Tomcat-5.5

at_autype: 4_60790435

at_cat: item_50010388

X-Category: /cat/50010388

at_nick: anta%E5%AE%98%E6%96%B9%E6%97%97%E8%88%B0%E5%BA%97

at_itemId: 5a03c24080f703a37f3728545c5168e9

at_isb: 1

at_pgty: 2

at_cat: 50010388

at_brid: 20841

at_prid: 94394733

at_autype: 0_60790435

at_auid: 5311303009

Set-Cookie: cookie2=1b2432c744aa5c3eaf580cc06350c2a9;Domain=.taobao.com;Path=/;HttpOnly

Set-Cookie: t=ccba238f8728377450a0a27cbb5b565a; Domain=.taobao.com; Expires=Sat, 27-Jun-2020 02:13:07 GMT; Path=/

Set-Cookie: uc1=cookie14=UoMz0TST369pOQ%3D%3D; Domain=.taobao.com; Path=/

Set-Cookie: v=0; Domain=.taobao.com; Path=/

Content-Language: zh-CN

Set-Cookie: _lang=zh_CN:GBK; Domain=.taobao.com; Path=/

Set-Cookie: _lang=zh_CN:GBK; Domain=.taobao.com; Path=/

Vary: Accept-Encoding

Connection: close

Content-Type: text/html;charset=GBK

 

 

Detail正文内容

响应头以2个\r\n后面跟着正文的内容。

 

 

 

 

 

 

浏览器对同域名下并发HTTP请求数

浏览器默认最大并发连接数

 

 

浏览器

HTTP 1.1

HTTP 1.0

IE 6,7

2

4

IE 8

6

6

Firefox 2

2

8

Firefox 3

6

6

Safari 3, 4

4

4

Chrome 1,2

6

?

Chrome 3

4

4

Opera 9.63,10.00+

4

4

 

 

 

关于HTTP协议缓存:

a)、Cache-Control:指定请求和响应遵循的缓存机制。

在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓 存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if- cached,响应消中的指令包括public、private、no-cache、no-store、no-transform、must- revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:

     Public指示响应可被任何缓存区缓存。

     Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。

     no-cache指示请求或响应消息不能缓存

     no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。

     max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

     min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

     max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

 

Last-Modified:在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,

同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:

Last-Modified: Fri, 12 May 2006 18:53:33 GMT

户端第二次请求此URL时,会在头部加入一个属性,询问该时间之后文件是否有被修改过:

  If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT

如果服务器端的文件没有被修改过,则返回状态是304,内容为空,这样就节省了传输数据量。如果服务器端的文件被修改过,则返回新的文件内容和最后修改时间。

 

 

 

Expires:声明某时刻过期之后,浏览器有该URI请求时,去Server端更新URI内容

使用格式为:Expires: Sun, 10 Feb 2002 16:00:00 GMT

 


 

 

 

2、JSONP

Ajax这个用得很多的浏览器与服务器的异步通信,存在跨域问题,如:item.taobao.com中一段JS异步请求webwangwang.taobao.com因跨域的安全问题会请求失败。很多时候我们会用到跨域取数据。JSOP是一个很好的方式,当然还可以用flash,但是Flash的稳定性和各个浏览器厂商的实现不一这种方式有待验证。

JSONP一般是由JS在客户端页面中动态插入script标签,将其src属性设置为带参数的URL。当页面加载时,前述URL会将参数通过GET请求发送到相应 服务器端应用程序(由URL表示),服务器根据参数返回数据——注意,这个数据格式是JSON,并且(注意)被包含在一个函数调用中,例 如:callback({json_data});。这样,在客户端页面中存在预定义的callback(data)函数的定义时,服务器返回的函数调用实现回调。把服务端取到的数据传给客户端。

这次WEB旺旺长连接改造时,用JSONP,用JSONP解决跨域问题,分析了WEBQQ2.0,后发现,webww2.0用的是Ajax长轮询,WEBQQ不存在跨域问题。JSONP做长连接会出现页面一直在加载中,用延时加载可以解决这个问题,但在Opera延时加载也同样有问题。测试了IE6、IE8,FF,Chrome,Safari和常用国产浏览器,JSONP延时加载时,除FF的状态栏会提示正在加载中外,其它浏览器都没有提示。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值