CN101902485B - 一种反向Web代理的链接改写方法 - Google Patents
一种反向Web代理的链接改写方法 Download PDFInfo
- Publication number
- CN101902485B CN101902485B CN200910085025.5A CN200910085025A CN101902485B CN 101902485 B CN101902485 B CN 101902485B CN 200910085025 A CN200910085025 A CN 200910085025A CN 101902485 B CN101902485 B CN 101902485B
- Authority
- CN
- China
- Prior art keywords
- link
- client
- run time
- time version
- proxy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种反向Web代理的链接改写方法,包括:代理服务器或代理网关将客户端链接改写的执行代码插入到内网服务器的响应页面,发送给客户端;客户端执行所述执行代码,即进行了链接改写。本发明与现有的反向Web代理的链接改写方法相比,代理服务器或代理网关的转发速度更快,链接改写占用的内存和CPU等资源更少。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种反向Web代理HTML页面中链接的改写方法。
背景技术
反向代理服务(也称为逆向代理)是指一个Web代理服务器或Web代理网关(简称代理服务器或代理网关)能够代理外部网络上的主机对内部网络的访问的代理服务方式。反向代理技术可以被应用于应用层VPN(Virtualprivate network,虚拟专用网)(如SSL VPN)的Web代理模块。反向代理技术的核心技术就是地址转换。从普通用户看来,反向代理就像普通的Web服务器一样。而反向代理所代理的每一个内网Web服务器(简称内网服务器)都好像是反向代理服务器中的一个目录。进行地址转换就需要对内网服务器响应中的HTML页面里的链接进行改写。一般的链接改写方式有如下几种:直接改写,根据正则表达式改写,通过HTML解析模块改写。而目前的链接改写方式主要集中在代理服务器或代理网关上,由代理服务器或代理网关的链接改写模块提供相应的改写能力。
现有的链接改写方式有以下不足:
(1)由于链接改写主要在代理服务器或代理网关上完成,所以会占用代理服务器或代理网关的CPU、内存等资源。
(2)根据HTTP协议的要求,需要将HTML页面的大小记录在请求头的Content-length头域中,所以完成HTML链接改写后,还需要计算其改写后的内容大小,并相应的修改Content-length头域的值,这就需要缓存整个HTML页面。
(3)由于以上两点,代理服务器或代理网关的转发速度势必会受到影响。
发明内容
本发明要解决的技术问题就是提出一种反向Web代理的链接改写方法,解决现有技术中由于链接改写主要在代理服务器或代理网关上完成,而导致代理服务器或代理网关的转发速度受到影响的问题,能够提高代理服务器或代理网关的处理速度。
为了解决上述技术问题,本发明提供一种反向Web代理的链接改写方法,包括:
代理服务器或代理网关将客户端链接改写的执行代码插入到内网服务器的响应页面,发送给客户端;
客户端执行所述执行代码,即进行了链接改写。
进一步地,上述链接改写方法还可具有以下特点:
代理服务器或代理网关将执行代码插入到内网服务器的响应页面,发送给客户端的步骤执行之前,还执行:
向内网服务器转发客户端发送的请求;
接收到内网服务器的响应;
拼装客户端链接改写的执行代码。
进一步地,上述链接改写方法还可具有以下特点:
所述代理服务器或代理网关拼装客户端链接改写的执行代码的步骤具体包括:
代理服务器或代理网关使用自身的地址拼装客户端链接改写的正则表达式;
根据正则表达式拼装链接改写的执行代码。
进一步地,上述链接改写方法还可具有以下特点:
代理服务器或代理网关拼装客户端链接改写的正则表达式的步骤具体包括:
拼装针对HTML页面中绝对路径的URL的正则表达式;
拼装针对HTML页面中相对路径的URL的正则表达式。
进一步地,上述链接改写方法还可具有以下特点:
所述执行代码使用链接改写函数表示。
进一步地,上述链接改写方法还可具有以下特点:
代理服务器或代理网关将执行代码插入到内网服务器的响应页面,发送给客户端的步骤具体包括:
将执行代码插入到内网服务器的响应页面;
在所述响应页面中插入执行所述执行代码的调用信息;
计算并修改Content-length头域值;
发送所述响应页面给客户端。
进一步地,上述链接改写方法还可具有以下特点:
发送所述响应页面给客户端的步骤具体包括:
发送修改了Content-length头域的HTTP响应头;
发送插入了客户端链接改写的执行代码的HTML页面内容;
发送后续的HTML页面内容。
进一步地,上述链接改写方法还可具有以下特点:
所述客户端先加载所述响应页面,根据响应页面中的所述调用信息,执行所述执行代码。
进一步地,上述链接改写方法还可具有以下特点:
所述客户端执行所述执行代码的步骤具体包括:
改写响应页面A标签后的href链接;
改写响应页面Script标签后的src链接;
改写响应页面Link标签后的href链接;
改写响应页面IMG标签后的src链接;
改写响应页面Form标签后的action链接。
进一步地,上述链接改写方法还可具有以下特点:
所述执行代码为脚本。
本发明与现有的反向Web代理的链接改写方法相比,代理服务器或代理网关的转发速度更快,链接改写占用的内存和CPU等资源更少,由以下几个方面体现:
(1)只需在HTML页面开始部分插入客户端链接改写的执行代码;
(2)插入客户端链接改写的执行代码并修改内网服务器响应的Content-length头域后,就无需缓存HTML页面内容,读写效率高。
附图说明
图1为本发明实施例的网络拓扑示意图;
图2为本发明实施例的链接改写的具体实施流程图。
具体实施方式
在本发明中,代理服务器或代理网关将客户端链接改写的执行代码插入到内网服务器的响应页面,发送给客户端;客户端执行所述执行代码,即进行了链接改写。
下面结合附图及具体实施例对本发明进行详细说明。
如图1所示,为本发明实施例使用的网络拓扑示意图。反向Web代理系统中的报文格式符合标准的HTTP协议(其中客户端和代理网关之间的连接可以是建立在SSL协议之上的安全连接)。在实施例中并发访问的客户端浏览器可以有多个,从而对代理网关的处理能力有较高的要求。
按照图1所示的网络拓扑结构,假设代理网关本身的URL是http://reverse-proxy,而用户想访问的内网服务器URL是http://www.test.com/index.html,就需要将用户访问的HTML页面中的链接替换为http://reverse-proxy/www.test.com/index.html,才能实现用户通过代理网关对内网服务器的访问。
图2为实施例的链接改写的具体实施流程图,包括如下步骤:
步骤201,代理网关向内网服务器转发客户端发送的请求;
在本实施例中,代理网关收到从客户端浏览器发来的请求如下:
GET/index.html HTTP/1.1
……
Host:www.test.com
然后,代理网关将该请求发送到被请求的内网服务器;
步骤202,代理网关接收到内网服务器的响应;
内网服务器收到客户端的请求后,回HTTP响应(其中HTML页面内容包含在HTTP响应体内)如下:
HTTP/1.1200 OK
……
Content-Length:1467
Connection:close
Content-Type:text/html;charset=UTF-8
<html>
<!-html页面内容>
<head>
</head>
<body>
</body>
</html>
步骤203,代理网关拼装客户端链接改写的执行代码;
代理网关收到上述HTTP响应后,使用自身的地址拼装客户端链接改写的正则表达式;根据正则表达式拼装客户端链接改写的执行代码;该执行代码使用链接改写函数表示;
其中,拼装客户端链接改写的正则表达式具体包括:
拼装针对HTML页面中绝对路径的URL的正则表达式;
拼装针对HTML页面中相对路径的URL的正则表达式。
本实施例中,拼装客户端链接改写的执行代码(本例中使用的是JavaScript的伪代码),如下:
<script type=″text/javascript″>
/*网关拼装的客户端链接改写的执行代码*/
function replace_link(){
/*根据正则表达式拼装客户端链接改写的执行代码*/
/*获取A标签的对象集合。*/
objs=document.getElementsByTagName(″A″);
/*遍历A标签的对象集合*/
for(i=0;i<objs.length;i+=1)
{
/*根据客户端链接改写的正则表达式改写A标签后的href链接*/
}
/*获取SCRIPT标签的对象集合。*/
objs=document.getElementsByTagName(″SCRIPT″);
/*遍历SCRIPT标签的对象集合*/
for(i=0;i<objs.length;i+=1)
{
/*根据客户端链接改写的正则表达式改写SCRIPT标签后的src链接*/
}
/*获取LINK标签的对象集合。*/
objs=document.getElementsByTagName(″LINK″);
/*遍历LINK标签的对象集合*/
for(i=0;i<objs.length;i+=1)
{
/*根据客户端链接改写的正则表达式改写LINK标签后的href链接*/
}
/*获取IMG标签的对象集合。*/
objs=document.getElementsByTagName(″IMG″);
/*遍历IMG标签的对象集合*/
for(i=0;i<objs.length;i+=1)
{
/*根据客户端链接改写的正则表达式改写IMG标签后的src链接*/
}
/*获取FORM标签的对象集合。*/
objs=document.getElementsByTagName(″FORM″);
/*遍历FORM标签的对象集合*/
for(i=0;i<objs.length;i+=1)
{
/*根据客户端链接改写的正则表达式改写FORM标签后的action链接*/
}
}
</script>
步骤204,代理网关将所述执行代码插入到内网服务器响应的页面中,以及,在所述页面中插入执行所述执行代码的调用信息;
代理网关拼装完客户端链接改写的执行代码后,便将其插入到从内网服务器收到的HTTP响应的HTML页面<html>标签后,并插入执行所述执行代码的调用信息,使客户端根据所述调用信息执行所述执行代码,在本例中,即在客户端页面加载时,客户端根据所述调用信息执行所述链接改写函数,本例中将其添加到<body>标签后,修改后标签内容如下:
<body onload=″replace_link();″>
在进行插入内容的同时,还需要记录插入内容的长度;
步骤205,查找HTTP响应头,看是否有Content-Length头域,若有,则执行步骤206,否则,执行207;
步骤206,计算并修改Content-length头域值;
本例中Content-Length头域值是1467,假设我们插入的客户端执行代码的长度是100字节,那么就需要将Content-Length头域值修改为1567;
步骤207,代理网关将插入客户端链接改写的执行代码的响应页面发送给客户端浏览器;
其中,发送的过程包括:发送HTTP响应头、发送插入客户端链接改写的执行代码的HTML页面内容、发送后续的HTML页面内容;
在这里,代理网关无须缓存后续的HTML页面内容,直接将其发送即可;
步骤208,客户端浏览器收到完整的HTTP响应后,在加载HTML页面的时候,根据所述执行代码的调用信息就会自动执行客户端链接改写的执行代码,完成链接的改写工作;
其中,链接的改写工作具体包括:
改写响应页面A标签后的href链接;
改写响应页面Script标签后的src链接;
改写响应页面Link标签后的href链接;
改写响应页面IMG标签后的src链接;
改写响应页面Form标签后的action链接。
上述实施例是以代理网关为例进行的描述,可以将代理网关替换成代理服务器,其链接改写的具体实现方式与代理网关相同,此处不再赘述。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
1.一种反向Web代理的链接改写方法,包括:
代理服务器或代理网关向内网服务器转发客户端发送的请求;
代理服务器或代理网关接收到内网服务器的响应;
代理服务器或代理网关使用自身的地址拼装客户端链接改写的正则表达式;根据正则表达式拼装链接改写的执行代码;
代理服务器或代理网关将客户端链接改写的执行代码插入到内网服务器的响应页面,发送给客户端;
客户端执行所述执行代码,即进行了链接改写。
2.如权利要求1所述的链接改写方法,其特征在于,代理服务器或代理网关拼装客户端链接改写的正则表达式的步骤具体包括:
拼装针对HTML页面中绝对路径的URL的正则表达式;
拼装针对HTML页面中相对路径的URL的正则表达式。
3.如权利要求1所述的链接改写方法,其特征在于,
所述执行代码使用链接改写函数表示。
4.如权利要求1所述的链接改写方法,其特征在于,
代理服务器或代理网关将执行代码插入到内网服务器的响应页面,发送给客户端的步骤具体包括:
将执行代码插入到内网服务器的响应页面;
在所述响应页面中插入执行所述执行代码的调用信息;
计算并修改Content-length头域值;
发送所述响应页面给客户端。
5.如权利要求4所述的链接改写方法,其特征在于,
发送所述响应页面给客户端的步骤具体包括:
发送修改了Content-length头域的HTTP响应头;
发送插入了客户端链接改写的执行代码的HTML页面内容;
发送后续的HTML页面内容。
6.如权利要求4所述的链接改写方法,其特征在于,
所述客户端先加载所述响应页面,根据响应页面中的所述调用信息,执行所述执行代码。
7.如权利要求1所述的链接改写方法,其特征在于,
所述客户端执行所述执行代码的步骤具体包括:
改写响应页面A标签后的href链接;
改写响应页面Script标签后的src链接;
改写响应页面Link标签后的href链接;
改写响应页面IMG标签后的src链接;
改写响应页面Form标签后的action链接。
8.如权利要求1-7中任一权利要求所述的链接改写方法,其特征在于,所述执行代码为脚本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910085025.5A CN101902485B (zh) | 2009-05-27 | 2009-05-27 | 一种反向Web代理的链接改写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910085025.5A CN101902485B (zh) | 2009-05-27 | 2009-05-27 | 一种反向Web代理的链接改写方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101902485A CN101902485A (zh) | 2010-12-01 |
CN101902485B true CN101902485B (zh) | 2014-05-14 |
Family
ID=43227686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910085025.5A Expired - Fee Related CN101902485B (zh) | 2009-05-27 | 2009-05-27 | 一种反向Web代理的链接改写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101902485B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075570B (zh) * | 2010-12-31 | 2013-01-30 | 南京中兴特种软件有限责任公司 | 一种基于关键字的http报文缓存机制的实现方法 |
CN102591625B (zh) * | 2011-01-06 | 2015-04-01 | 友讯科技股份有限公司 | 一种自动插入外嵌工具列的方法 |
CN103383687B (zh) * | 2012-05-02 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 一种页面处理方法和装置 |
FI124082B (en) * | 2012-05-09 | 2014-03-14 | Aalto Korkeakoulusäätiö | Server, procedure for running a server and system |
CN104468655B (zh) * | 2013-09-18 | 2018-04-03 | 阿里巴巴集团控股有限公司 | 对反向代理软件进行测试的方法及系统 |
CN103577585B (zh) * | 2013-11-08 | 2018-02-23 | 北京国双科技有限公司 | 互联网中用户的标识方法和装置 |
CN105204934B (zh) * | 2015-09-24 | 2018-12-28 | 福建天晴数码有限公司 | 一种自动切换浏览器兼容版本的方法及系统 |
CN105354269B (zh) * | 2015-10-27 | 2019-07-12 | 中通服公众信息产业股份有限公司 | 基于反向代理及内容过滤的Web应用语言本地化方法和系统 |
CN106470245A (zh) * | 2016-10-24 | 2017-03-01 | 杭州迪普科技股份有限公司 | 页面推送方法及装置 |
CN107317845A (zh) * | 2017-06-07 | 2017-11-03 | 北京星网锐捷网络技术有限公司 | 基于Web代理的数据获取方法及装置 |
CN109962913A (zh) * | 2019-03-11 | 2019-07-02 | 北京信安世纪科技股份有限公司 | 基于安全套接层协议的代理服务器及代理方法 |
CN110808897A (zh) * | 2019-11-06 | 2020-02-18 | 深信服科技股份有限公司 | 代理访问方法、用户设备、存储介质、装置及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1487711A (zh) * | 2002-09-03 | 2004-04-07 | �Ҵ���˾ | 网络系统、反向代理、计算机设备、数据处理方法以及程序产品 |
CN101178717A (zh) * | 2007-12-05 | 2008-05-14 | 优视动景(北京)技术服务有限公司 | 一种对网页进行适配处理的方法及网页适配装置 |
CN101247395A (zh) * | 2008-03-13 | 2008-08-20 | 武汉理工大学 | 一种Session ID全透明传递的ISAPI访问控制系统 |
CN101981887A (zh) * | 2008-01-26 | 2011-02-23 | 思杰系统有限公司 | 用于配置和细粒度策略驱动web内容检测和重写的系统和方法 |
-
2009
- 2009-05-27 CN CN200910085025.5A patent/CN101902485B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1487711A (zh) * | 2002-09-03 | 2004-04-07 | �Ҵ���˾ | 网络系统、反向代理、计算机设备、数据处理方法以及程序产品 |
CN101178717A (zh) * | 2007-12-05 | 2008-05-14 | 优视动景(北京)技术服务有限公司 | 一种对网页进行适配处理的方法及网页适配装置 |
CN101981887A (zh) * | 2008-01-26 | 2011-02-23 | 思杰系统有限公司 | 用于配置和细粒度策略驱动web内容检测和重写的系统和方法 |
CN101247395A (zh) * | 2008-03-13 | 2008-08-20 | 武汉理工大学 | 一种Session ID全透明传递的ISAPI访问控制系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101902485A (zh) | 2010-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101902485B (zh) | 一种反向Web代理的链接改写方法 | |
CN101132420B (zh) | 一种基于ssl vpn的链接改写方法和设备 | |
EP1784963B1 (en) | Techniques for delivering personalized content with a real-time routing network | |
US9460222B2 (en) | System for rewriting dynamically generated uniform resource locators in proxied hyper text markup language content in accordance with proxy server rules | |
US9143378B2 (en) | Rendering components within different browser environments | |
CN102783119A (zh) | 访问控制方法、系统及接入终端 | |
CN102638580A (zh) | 一种网页信息处理方法和装置 | |
US20160241664A1 (en) | Method, device, and system for redirecting data by using service proxy | |
CN105763619A (zh) | 客户端与服务端进行通讯的方法及装置 | |
CN101409937B (zh) | 一种将脚本转换成目标系统支持的数据格式的方法及装置 | |
CN102929985A (zh) | 一种收藏网页展示的方法和系统 | |
CN104980289A (zh) | 消息推送方法、装置和系统 | |
CN110769009B (zh) | 用户身份认证方法及系统 | |
CN111913817A (zh) | 一种数据传输方法、系统和设备以及计算机可读存储介质 | |
CN104615597A (zh) | 浏览器中清除缓存文件的方法、装置和系统 | |
CN105577480A (zh) | 一种网络连接性能的监测方法及装置 | |
CN103825772A (zh) | 识别用户点击行为的方法及网关设备 | |
CN103368872A (zh) | 数据包转发系统和方法 | |
CN103095608A (zh) | 一种dns数据包的代理转发方法 | |
US20170060112A1 (en) | Control program for accessing browser data and for controlling appliance | |
CN112492055A (zh) | 一种传输协议重定向的方法、装置、设备及可读存储介质 | |
CN102984179A (zh) | 一种面向云计算操作系统进行Web服务跨域访问的方法 | |
CN103561068A (zh) | 一种提高网页浏览速度的方法及装置 | |
TW201216657A (en) | Method for Managing Cookie | |
CN101917476B (zh) | 超文本传输协议消息处理方法及其客户端系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140514 Termination date: 20180527 |
|
CF01 | Termination of patent right due to non-payment of annual fee |