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的状态栏会提示正在加载中外,其它浏览器都没有提示。
- 大小: 8.2 KB
分享到:
相关推荐
### 使用JSONP完成HTTP和HTTPS之间的跨域访问 在现代Web开发中,跨域问题是一项常见挑战,尤其是在涉及不同协议(如HTTP与HTTPS)的数据交互时。本文将深入探讨如何利用JSONP(JSON with Padding)技术来实现HTTP与...
- 只支持GET请求:JSONP只能处理GET请求,无法处理其他类型的HTTP请求。 **5. JSON与JSONP的比较** - JSON是一种数据格式,而JSONP是一种跨域数据请求的技术。 - JSON更安全,而JSONP则牺牲了一定的安全性以实现...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML的`<script>`标签可以不受同源策略限制的特性,允许网页从其他源获取数据。在本示例中,我们将深入探讨JSONP的工作原理,以及如何使用Python来实现...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性,为了解决JavaScript在浏览器端由于同源策略限制无法直接访问不同源的HTTP请求的问题。在本场景中,前端使用...
JSONP (JSON with Padding) 是一种跨域数据交互协议,主要应用于JavaScript中,用来解决浏览器的同源策略(SOP)限制。同源策略限制了JavaScript只能与相同协议、相同域名、相同端口的源进行交互,但JSONP巧妙地利用...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML的`<script>`标签可以跨域请求资源的特性。在这个纯Servlet实现JSONP的例子中,我们将深入理解JSONP的工作原理,以及如何在Java的Servlet环境中实现...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML中`<script>`标签可以跨域请求资源的特点,来实现JavaScript从一个域获取另一个域的数据。JSONP主要用于解决同源策略带来的限制,因为在浏览器的...
JSONP (JSON with Padding) 是一种跨域数据交互协议,常用于解决JavaScript由于同源策略限制而无法直接访问不同源的HTTP请求的问题。在标题"Jsonp+asp.net"中,我们可以理解为这个项目或教程是关于如何在ASP.NET环境...
在Web开发中,由于浏览器的同源策略限制,JavaScript无法直接发起对不同源(协议、域名或端口)的HTTP请求。然而,Ajax技术在实现动态网页交互时常常需要跨越这个限制,这时就引入了JSONP(JSON with Padding)作为...
JSONP(JSON with Padding)是一种跨域数据交互协议,它的基本思想是利用JavaScript函数调用的特性,将数据封装在函数调用中,从而绕过浏览器的同源策略限制。在网页开发中,如果你需要从一个不同的域名下获取数据,...
它支持多种HTTP协议版本,包括HTTP/1.1和HTTP/2,还提供了丰富的功能,如连接管理、重试策略、身份验证和Cookie管理等。在使用HTTPClient时,开发者可以创建复杂的HTTP操作,例如POST、PUT、DELETE请求,发送表单...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性,将JSON数据包裹在一个JavaScript函数调用中返回,从而实现跨域通信。在.NET 3.5中,Windows Communication ...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性来实现JavaScript与服务器之间的通信。在JavaScript中,由于同源策略的限制,通常不能直接访问不同源的资源。但是...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML的`<script>`标签可以不受同源策略限制的特性,实现JavaScript从不同源获取数据。在本例中,我们将探讨如何通过JSONP来解决JavaScript的跨域问题,...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了浏览器的同源策略限制的漏洞,通过动态创建`<script>`标签来实现跨域请求。这种技术在早期的Web开发中非常常见,特别是在AJAX无法直接进行跨域请求的...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性来实现浏览器与服务器之间的通信。在Web开发中,由于同源策略的限制,JavaScript通常无法直接获取其他域名下的...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性来实现数据的交换。在Web开发中,由于浏览器的同源策略限制,通常JavaScript无法直接访问不同源的资源,但JSONP...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了浏览器的同源策略限制的漏洞,通过动态创建`<script>`标签来实现数据的请求与接收。在这个"跨域jsonp资料包.zip"中,我们可以深入探讨JSONP的工作原理、...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性来实现数据的交换。在Web开发中,由于浏览器的同源策略限制,JavaScript通常无法直接访问不同源的资源,但JSONP...
在Web开发中,跨域(Cross-Origin)是一个常见的问题,由于浏览器的安全策略限制,JavaScript通常不能直接访问不同源(协议+域名+端口)的资源。然而,为了实现某些功能,比如用户登录、数据获取等,我们需要打破这...