Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5488349B2 - 中継装置、中継方法及び中継プログラム - Google Patents
[go: Go Back, main page]

JP5488349B2 - 中継装置、中継方法及び中継プログラム - Google Patents

中継装置、中継方法及び中継プログラム Download PDF

Info

Publication number
JP5488349B2
JP5488349B2 JP2010192855A JP2010192855A JP5488349B2 JP 5488349 B2 JP5488349 B2 JP 5488349B2 JP 2010192855 A JP2010192855 A JP 2010192855A JP 2010192855 A JP2010192855 A JP 2010192855A JP 5488349 B2 JP5488349 B2 JP 5488349B2
Authority
JP
Japan
Prior art keywords
request
url
html
server
relay device
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
Application number
JP2010192855A
Other languages
English (en)
Other versions
JP2012048679A (ja
Inventor
昌弘 田中
照宣 粂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010192855A priority Critical patent/JP5488349B2/ja
Publication of JP2012048679A publication Critical patent/JP2012048679A/ja
Application granted granted Critical
Publication of JP5488349B2 publication Critical patent/JP5488349B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Description

本発明は、中継装置、中継方法及び中継プログラムに関する。
セキュリティの強化などのために、Webブラウザ(Web Browser)とWebサーバ(Web Server)の間にリバースプロキシサーバ(Reverse proxy server)と呼ばれる中継装置が設置されることがある。この場合、Webブラウザのリクエスト(Request)は、Webサーバに直接送信されず、中継装置を介してWebサーバに送信される。
中継装置は、Webブラウザのリクエストを受信すると、Webサーバからリソースを取得するためのURL(Uniform Resource Locator:統一資源位置指定子)を特定する。中継装置は、このURLの特定を、Webブラウザから受信したリクエストに含まれるURLの中の特定部分の記述に基づいて行う。URLを特定すると、中継装置は、Webブラウザから受信したリクエストに含まれるURLを、特定したURLに書き換える。中継装置は、このように書き換えたリクエストをWebサーバに送信する。
図21は、中継装置によるURLの書き換え手順の説明図である。図21に示すように、端末装置110のWebブラウザ111とWebサーバ130の間には、中継装置120が配置される。以下においては、HTMLファイル「A.html」に基づいたWebページを表示部112に表示するために、Webブラウザ111がWebサーバ130からHTMLファイル「A.html」を取得する例を説明する。なお、中継装置120のドメイン名を「server」とし、Webサーバ130のドメイン名を「domain1」とする。
図21に示すように、端末装置110のWebブラウザ111は、リクエストを中継装置120へ送信する(ステップS100)。ステップS100において、Webブラウザ111から送信されるリクエストに含まれるURLは、「http://server/http:domain1/A.html」である。
中継装置120は、Webブラウザ111からリクエストを受信すると、受信したリクエストに含まれるURLを変換部121により変換する(ステップS101)。具体的には、中継装置120は、変換部121によりリクエストに含まれるURLを「http://server/http:domain1/A.html」から「http://domain1/A.html」へ変換する。中継装置120は、変換部121によりURLが変換されたリクエストを、Webサーバ130へ転送する(ステップS102)。
Webサーバ130は、中継装置120からリクエストを受信すると、受信したリクエストに含まれるURL「http://domain1/A.html」に基づき、HTMLファイル「A.html」を読み出す。Webサーバ130は、読み出したHTMLファイル「A.html」を含むレスポンスを中継装置120へ送信する(ステップS103)。中継装置120は、Webサーバ130から受信したレスポンスをWebブラウザ111へ転送する。
Webブラウザ111はHTMLファイル「A.html」を受信すると、受信したHTMLファイル「A.html」内に含まれるリンク先URLを変換する(ステップS104)。リンク先URLとは、HTMLファイルによりハイパーリンクが設定されたURLである。リンク先URLとして、例えば、「http://domain1/F.html」がHTMLファイル「A.html」内に記述されているとする。この場合、Webブラウザ111は、「http://domain1/F.html」を「http://server/http:domain1/F.html」に変更する。この変更により、Webブラウザ111によるリクエストの送信先がWebサーバ130から中継装置120に変更される。すなわち、Webブラウザ111によるHTMLファイル「F.html」の取得が中継装置120を介して行われるようにHTMLファイル「A.html」内の記述が変換される。
特開2004−94805号公報
しかしながら、HTMLファイルにおいてリンク先URLが誤った相対パスで記述されている場合、Webブラウザ111からのリクエストが中継装置120からWebサーバ130へ送信されないことがある。
具体的には、HTMLファイルにおいて、存在しない上位階層を示す相対パスがリンク先URLとして記述されている場合である。この場合、Webブラウザ111から中継装置120に送信されたリクエストは、中継装置120からWebサーバ130へ送信されない。
例えば、Webブラウザ111がURL「http://server/http:domain1/A.html」を指定して、図21に示すように、HTMLファイル「A.html」を取得したとする。また、Webブラウザ111が取得したHTMLファイル「A.html」内には、あるリンク先URLとして、「../B.html」が記述されているとする。なお、HTMLファイル「B.html」をWebサーバ130から取得するための正しいURLは、相対パスで記述すると「./B.html」であり、絶対パスで記述すると「http//server/http:domain1/B.html」である。
図22は、誤った相対パスがリンク先URLとして記述されている場合におけるURLの書き換え手順の説明図である。Webブラウザ111は、HTMLファイル「A.html」をWebサーバ130から取得したとき、図21のステップS104で示したように、絶対パスで記述されているリンク先URLを変換する。一方、相対パスで記述されているリンク先URLは変換しない。従って、リンク先URLが相対パスで記述されている「../B.html」は変換されない。
Webブラウザ111は、リンク先URL「../B.html」がリクエスト対象として指定されたとき、このリンク先URLを絶対パスで記述されるURLへ変換する(ステップS105)。ここで、リンク元URLは「http://server/http:domain1/A.html」であり、「../」は一つ上位の階層を示す記述である。そのため、Webブラウザ111は、HTMLファイル「B.html」がHTMLファイル「A.html」の一つ上位の階層である「http:domain1」と同階層にあるとみなす。そのため、Webブラウザ111は、リンク先URLの相対パス「../B.html」を、絶対パス「http://server/B.html」に変換する。リンク先URLの正しい絶対パスは、上述したように「http://server/http:domain1/B.html」であるため、Webブラウザ111は、誤ったURLを生成することになる。
ステップS105において変換されたリンク先URL「http://server/B.html」は、リクエストURLとしてリクエストに設定され、Webブラウザ111から中継装置120に送信される(ステップS106)。このリクエストURLには、Webサーバ130のドメイン名が含まれていないため、中継装置120の変換部121ではURLの変換を行うことができない(ステップS107)。従って、中継装置120は、リクエストを転送すべきWebサーバが解からず、リクエストの転送を行うことができない。
中継装置120においてリクエストの転送を行うことができない現象は、中継装置120によってHTMLファイル内のリンク先URLを変換する場合でも同様に発生する。何故なら、中継装置120の変換方法もWebブラウザ111と変換方法は同じであるためである。従って、存在しない上位階層を示す相対パスがリンク先URLとして記述されている場合、中継装置120による変換後のリンク先URLは誤ったURLとなる。このように誤ったリンク先URLは、中継装置120からWebブラウザ111に渡される。従って、Webブラウザ111は、誤ったリンク先URLを含むリクエストを中継装置120に送信することになり、Webブラウザ111でURLを変換する場合と同様の現象が発生する。
このように、存在しない上位階層を示す相対パスに基づくリクエストがWebブラウザ111から送信された場合、中継装置120はリクエストの転送を行うことができない。従って、Webブラウザ111は、リクエストを送信したにもかかわらず、このリクエストに応じたリソースをWebサーバ130から取得することができない。
開示の技術は、上記に鑑みてなされたものであって、存在しない上位階層を示す相対パスに基づくリクエストに対し、正しい送信先を判別することができる中継装置、中継方法及び中継プログラムを提供することを目的とする。
本願の開示する中継装置は、一つの態様において、判定部と、抽出部と、挿入部とを備える。前記判定部は、ブラウザから受信したリクエストに含まれる資源識別子が所定のフォーマットに適合するか否かを判定する。前記抽出部は、前記資源識別子が所定のフォーマットに適合しないと前記判定部により判定されたとき、前記資源識別子のリンク元である資源識別子に含まれるサーバのドメイン名を前記リクエストから抽出する。前記挿入部は、前記抽出部によって抽出された前記サーバのドメイン名を、前記リクエストに含まれる資源識別子のドメイン部の後ろに挿入する。
本願の開示する技術の一つの態様によれば、存在しない上位階層を示す相対パスに基づくリクエストに対し、正しい送信先を判別することができる。
図1は、実施例1に係る中継装置を含む通信システムの構成を示す図である。 図2は、実施例1に係る中継装置のURL変換処理を説明する図である。 図3は、実施例1に係る中継装置のURL変換処理を説明する図である。 図4は、実施例1に係る中継装置のURL変換処理を説明する図である。 図5は、実施例1に係る中継装置のURL変換処理を説明する図である。 図6は、実施例1に係る中継装置の構成を示すブロック図である。 図7は、実施例1に係る中継装置の挿入部の処理を説明する図である。 図8は、実施例1に係る中継装置の応答部から送信されるレスポンスを説明する図である。 図9は、実施例1に係る中継装置の処理を示すシーケンス図である。 図10は、実施例1に係る中継装置の処理を示すシーケンス図である。 図11は、実施例1に係る中継装置の処理を示すシーケンス図である。 図12は、実施例2に係る中継装置の構成を示すブロック図である。 図13は、実施例2に係る中継装置の記憶部に記憶される通信ログの例を示す図である。 図14は、実施例2に係る中継装置の判定部の処理を説明する図である。 図15は、実施例2に係る中継装置の処理を示すシーケンス図である。 図16は、実施例2に係る中継装置の処理を示すシーケンス図である。 図17は、実施例3に係る中継装置の構成を示すブロック図である。 図18は、実施例3に係る中継装置の処理を示すシーケンス図である。 図19は、実施例4に係る中継装置を含む通信システムの構成を示す図である。 図20は、実施例4に係る中継装置の構成を示すブロック図である。 図21は、従来のURLの書き換え手順の説明図である。 図22は、従来のURLの書き換え手順の説明図である。
以下に添付図面を参照して、この発明に係る中継装置、中継方法及び中継プログラムの実施例を詳細に説明する。
以下の実施例では、実施例1に係る中継装置のURL変換機能、構成および処理の流れを順に説明し、最後に実施例1による効果を説明する。
[中継装置のURL変換機能]
まず最初に、図1〜5を用いて、実施例1に係る中継装置3のURL変換機能を説明する。図1は、実施例1に係る中継装置3を含む通信システムの構成を示す図である。また、図2〜図5は、実施例1に係る中継装置3のURL変換機能を説明する図である。なお、以下においては、中継装置3のドメイン名を「server」とし、Webサーバ4のドメイン名を「domain1」とする。また、Webブラウザ2と中継装置3との間の通信、及び中継装置3とWebサーバ4との間の通信は、通信プロトコルとしてHTTP(Hypertext Transfer Protocol)などが用いられる。
図1に示すように、実施例1に係る中継装置3は、Webブラウザ(Web Browser)2を有する端末装置1内に配置されるローカルプロシキ(Local Proxy)である。この中継装置3は、リバースプロキシとも呼ばれ、Webブラウザ2のリクエスト(Request)を中継する。すなわち、Webブラウザ2のリクエストは、Webサーバ(Web Server)4には直接送信されず、中継装置3を介してWebサーバ4に送信される。
Webブラウザ2から送信されるリクエストには、リクエスト行、メッセージヘッダ及びメッセージボディなどの情報が含まれる。そして、リクエスト行には、リクエストURLが含まれる。リクエストURLは、Webブラウザ2が取得しようとするリソース(Resource)のURL(Uniform Resource Locator:統一資源位置指定子)である。リソースとして、例えば、HTMLファイル、画像データ、動画データ、音楽データなどがある。なお、URLは、資源識別子の一例である。すなわち、URLは、URI(Uniform Resource Identifier:統一資源識別子)であり、ネットワーク上に存在するリソースの場所を指し示す記述方式である。
中継装置3は、Webブラウザ2のリクエストを受信すると、受信したリクエストに含まれるリクエストURLからリソースのURLを特定する。例えば、リクエストURLが図2に示すURLであるとする。すなわち、リクエストに含まれるURLのスキーム部、ドメイン部及びパス部にそれぞれ、「http」、「server」及び「http:domain1/A.html」が記述されているとする。この場合、中継装置3は、図3に示すように、リクエストURLのパス部「http:domain1/A.html」からリソースのURL「http://domain1/A.html」を特定する。なお、スキーム部には、リソースを取得するためのプロトコル名が記述される。ドメイン部には、Webサーバ4などのようにリソースを有する装置のドメイン名が記述される。パス部には、ドメイン部で指定された装置内のリソースの所在地の情報が記述される。例えば、パス部には、ディレクトリ名やフォルダ名を含んだファイル名が記述される。
リソースのURLを特定すると、中継装置3は、リクエストURLをリソースのURLに書き換える。中継装置3は、このようにURLを書き換えたリクエストをWebサーバ4にネットワーク5を介して送信する。
このように、実施例1に係る中継装置3では、Webブラウザ2からリクエストを受信すると、受信したリクエストに含まれるリクエストURLのドメイン部を中継装置3のドメイン名からWebサーバ4のドメイン名に変換する。このようにすることで、Webブラウザ2からのリクエストは、中継装置3を介してWebサーバ4へ送信される。
Webサーバ4は、中継装置3を介したWebブラウザ2からのリクエストに対して、リクエストURLに応じたHTMLファイルを含むレスポンスを中継装置3へ送信する。中継装置3は、Webサーバ4から受信したレスポンスをWebブラウザ2へ転送する。Webブラウザ2は、HTMLファイルを受信すると、受信したHTMLファイルに含まれるリンク先URLのうち絶対パスで記述されたURLを、中継装置3を送信先とするURLに変換する。例えば、受信したHTMLファイルにリンク先URLとして、「http://domain1/G.html」が記述されている場合、Webブラウザ2は、このリンク先URLを「http://server/http:domain1/G.html」に変換する。
このように、Webブラウザ2は、リンク先URLのドメイン部が中継装置3のドメイン名となるようにHTMLファイルの書き換えを行っている。そのため、Webブラウザ2は、Webサーバ4が提供する画像データやHTMLファイルなどのリソースを中継装置3を介して要求及び取得することになる。
また、Webブラウザ2は、リンク先URLを変換して、リクエストURLのパス部にWebサーバ4のドメイン名やリソースのパス名を含ませるようにしている。そのため、中継装置3は、Webブラウザ2からリクエストを受信したとき、受信したリクエストに含まれるリクエストURLを、Webサーバ4のURLに書き換えることができる。Webサーバ4のURLは、Webサーバ4からソースを取得するためのURLである。
ところで、リンク先URLが相対パスで記述されている場合がある。この場合、Webブラウザ2は、HTMLファイルの取得時にはリンク先URLの変換を行わず、リンク先URLがリクエスト対象として指定されたときに、リンク先URLを変換する。このリンク先URLの変換は、リンク元URLに基づいて行われる。
例えば、リンク元URLが「http://server/http:domain1/A.html」であり、リンク先URLが相対パスで「./B.html」と記述されているとする。「./」は同階層を示す記述であり、HTMLファイル「B.html」は、HTMLファイル「A.html」と同階層である。そのため、Webブラウザ2は、相対パスで記述されたリンク先URLを、絶対パス「http://server/http:domain1/B.html」に変換する。Webブラウザ2は、このように変換したリンク先URLをリクエストURLとしたリクエストを送信する。
ところが、存在しない上位階層を示す相対パスがリンク先URLとして記述されている場合、Webブラウザ2により変換したリンク先URLのパス部には、Webブラウザ2のドメイン名が含まれなくなる。
例えば、Webブラウザ2がURL「http://server/http:domain1/A.html」を指定してHTMLファイル「A.html」を取得したとする。そして、HTMLファイル「A.html」内にリンク先URLとして、相対パス「../B.html」が記述されているとする。「../」は一つ上位の階層を示す記述である。従って、HTMLファイル「B.html」は、Webブラウザ2によりHTMLファイル「A.html」の一つ上位の階層である「http:domain1」と同階層にあるとみなされる。
そのため、Webブラウザ2は、図4に示すように、リンク先の相対パス「../B.html」を、リンク元URL「http://server/http:domain1/A.html」に基づき、「http://server/B.html」へ変換する。変換されたURLのパス部にはWebサーバ4のドメイン名が含まれておらず、このようなURLがリクエストURLとして含まれるリクエストがWebブラウザ2から中継装置3へ送信される。
一方、中継装置3を介さずにWebブラウザ2からWebサーバ4へリクエストが送信される場合には、このような問題は発生しない。これは、リンク元URLにおいて、Webサーバ4のドメイン名がパス部ではなくドメイン部に含まれているためである。
例えば、リンク元URLが「http://domain1/A.html」であり、リンク先URLが相対パス「../B.html」とする。この場合、HTMLファイル「B.html」は、HTMLファイル「A.html」よりも一つ階層が上位にあることになる。しかし、HTMLファイル「A.html」がパス部の最上位階層にあり、パス部にはHTMLファイル「A.html」よりも上位階層はない。そのため、Webブラウザ2は、HTMLファイル「B.html」がパス部の最上位階層にあるとみなし、図5に示すように、リンク先の相対パス「../B.html」を、正しい絶対パス「http://domain1/B.html」へ変換する。
このように、存在しない上位階層を示す相対パスがリンク先URLとして記述されている場合、中継装置3の介在により、Webブラウザ2からのリクエストがWebサーバ4で受信できない現象が発生する。
そこで、実施例1に係る中継装置3では、存在しない上位階層を示す相対パスがリンク先URLとして記述された場合であっても、URL補完処理を行うことにより、この相対パスに基づくリクエストをWebサーバ4へ中継装置3を介して送信可能にしている。以下、中継装置3の構成及び処理の流れの説明において、具体的に説明する。
[中継装置の構成]
次に、図6を用いて、実施例1に係る中継装置3の構成を説明する。図6は、実施例1に係る中継装置3の構成を示すブロック図である。また、図7は、実施例1に係る中継装置の挿入部14の処理を説明する図である。また、図8は、実施例1に係る中継装置の応答部15から送信されるレスポンスを説明する図である。
図6に示すように、中継装置3は、判定部11、変換部12、抽出部13、挿入部14、応答部15を備える。以下にこれらの各部の処理を説明する。
判定部11は、Webブラウザ2からリクエストを受信すると、受信したリクエストに含まれるリクエストURLが予め設定したURL変換ルールに基づくフォーマット(以下、「URL変換フォーマット」とする)に適合するか否かを判定する。具体的には、判定部11は、リクエストURLのパス部の最上位階層にプロトコル名とWebサーバ4のドメイン名とが含まれているときに、URL変換フォーマットに適合すると判定する。
例えば、リクエストURLが「http://server/http:domain1/A.html」である場合、パス部の最上位階層に、プロトコル名「http」及びWebサーバ4のドメイン名「domain1」が含まれている。そのため、判定部11は、URL「http://server/http:domain1/A.html」はURL変換フォーマットに適合すると判定する。
判定部11は、リクエストURLがURL変換フォーマットに適合すると判定すると、Webブラウザ2から受信したリクエストを変換部12に渡す。一方、リクエストURLがURL変換フォーマットに適合しないと判定すると、判定部11は、Webブラウザ2から受信したリクエストからリクエストURLとRefererヘッダを抽出する。そして、判定部11は、抽出したリクエストURLとRefererヘッダを抽出部13に渡す。
Refererヘッダは、リクエストのヘッダメッセージに含まれる情報であり、リンク元URLが記述されている。リンク元URLは、リンク元の資源識別子の一例である。すなわち、リンク元URLとは、リクエストURLのリンク元となるURLである。例えば、URLが「http://server/http:domain1/A.html」であるHTMLファイル「A.html」内に、リンク先URLとして「http://server/http:domain1/B.html」が記述されているとする。この場合、リクエストURLは、「http://server/http:domain1/B.html」であり、リンク元URLは、「http://server/http:domain1/A.html」である。
変換部12は、判定部11から受け取ったリクエストに含まれる情報のうちリクエストURLをWebサーバ4のURLに書き換える。具体的には、変換部12は、リクエストURLのパス部の最上位階層の記述に基づいて、リクエストURLのスキーム部とドメイン部を書き換える。また、変換部12は、リクエストURLのパス部の最上位未満の階層に基づいて、リクエストURLのパス部を書き換える。
例えば、リクエストURLが「http://server/http:domain1/A.html」であるとする。この場合、変換部12は、パス部の最上位の階層に記述されている「http:domain1」に基づき、変換後のスキーム部を「http」とし、変換後のドメイン部を「domain1」とする。また、変換部12は、リクエストURLのパス部の最上位未満の階層に記述されている「A.html」に基づき、変換後のパス部を「A.html」とする。従って、リクエストURLは、「http://server/http:domain1/A.html」から「http://domain1/A.html」に書き換えられる。
変換部12は、このように書き換えたリクエストURL「http://domain1/A.html」を含むリクエストをWebサーバ4にネットワーク5を介して送信する。なお、変換部12は、Webブラウザ2から受信したリクエストに含まれる情報のうち、リクエスト行に含まれるリクエストURLを書き換え、メッセージヘッダやメッセージボディなどは書き換えない。
抽出部13は、判定部11から受け取ったRefererヘッダに含まれるリンク元URLからWebサーバ4のドメイン名を抽出する。具体的には、抽出部13は、リンク元URLのパス部の記述のうち最上位階層の「:」の後ろにある記述をWebサーバ4のドメイン名として抽出する。例えば、リンク元URLが「http://server/http:domain1/A.html」である場合、抽出部13は、最上位階層の記述「http:domain1」のうち、「domain1」をWebサーバ4のドメイン名として抽出する。また、抽出部13は、リンク元URLのパス部の記述のうち最上位階層の「:」の前にある記述からプロトコル名「http」を抽出する。抽出部13は、抽出したWebサーバ4のドメイン名とプロトコル名を挿入部14に渡す。また、抽出部13は、判定部11から受け取ったリクエストURLを挿入部14に渡す。
挿入部14は、抽出部13によって抽出されたWebサーバ4のドメイン名とプロトコル名を、リクエストURLのドメイン部の後ろに挿入する。具体的には、挿入部14は、「/」を挿入してリクエストURLのパス部の記述を一つ下層にずらし、パス部の最上位階層にWebサーバ4のドメイン名とプロトコル名を挿入する。このようにWebサーバ4のドメイン名とプロトコル名が挿入されたURLは、挿入部14から応答部15に渡される。
例えば、リクエストURLが「http://server/B.html」であり、抽出部13によって抽出されたWebサーバ4のドメイン名が「domain1」であるとする。また、抽出部13によって抽出されたプロトコル名が「http」であるとする。この場合、挿入部14は、図7に示すように、リクエストURLのパス部に記述されている「B.html」を「/B.html」として一つ下層にずらす。さらに、挿入部14は、最上位階層にプロトコル名「http」及びWebサーバ4のドメイン名「domain1」を挿入する。これにより、リクエストURLが「http://server/B.html」から「http://server/http:domain1/B.html」へ変換される。なお、プロトコル名「http」とWebサーバ4のドメイン名「domain1」とはコロン「:」で区切られる。
応答部15は、挿入部14から受け取ったURLを含むレスポンスを生成し、このレスポンスをWebブラウザ2に送信する。このレスポンスは、挿入部14により挿入処理が行われたURLに対するリダイレクト処理をWebブラウザ2に要求するレスポンスである。例えば、挿入部14により挿入処理が行われたURLが「http://server/ http:domain1/B.html」であるとする。この場合、応答部15は、図8に示すように、「301 Moved Permanently」と「Location:http://server/ http:domain1/B.html」を含むレスポンスを生成して、Webブラウザ2に送信する。「301 Moved Permanently」は、ステータス行のステータスコードとしてレスポンスに含まれる。また、「Location:http://server/ http:domain1/B.html」は、ヘッダメッセージとしてレスポンスに含まれる。Webブラウザ2は、応答部15からのレスポンスを受信すると、「http://server/ http:domain1/B.html」をリクエストURLとしたリクエストを中継装置3へ送信するリダイレクト処理を行う。
[中継装置による処理]
次に、図9〜11を用いて、実施例1に係る中継装置3による処理を説明する。図9〜図11は、実施例1に係る中継装置3の処理の流れを示すシーケンス図である。
まず、図9を参照して、中継装置3を介してWebブラウザ2がHTMLファイル「A.html」を取得する処理の流れについて説明する。URL「http://server/http:domain1/A.html」がリクエスト対象として指定された場合、Webブラウザ2は、リクエストURLとして「http://server/http:domain1/A.html」を含むリクエストを送信する。このリクエストURLのドメイン部には中継装置3のドメイン名が記述されているため、Webブラウザ2は、このリクエストを中継装置3へ送信する(ステップS1)。
中継装置3の判定部11は、Webブラウザ2からリクエストを受信すると、受信したリクエストに含まれるリクエストURLがURL変換フォーマットに適合するか否かを判定する(ステップS2)。リクエストURL「http://server/http:domain1/A.html」のパス部の最上位階層にはプロトコル名「http」とWebサーバ4のドメイン名「domain1」が含まれる。従って、判定部11は、リクエストURLがURL変換フォーマットに適合すると判定する。リクエストURLがURL変換フォーマットに適合するとき、判定部11は、Webブラウザ2から受信したリクエストを変換部12に渡す。
変換部12は、URLを変換する。すなわち、変換部12は、判定部11から受け取ったリクエストに含まれる情報のうちリクエストURLを、Webサーバ4のURLに書き換える(ステップS3)。リクエストURLのパス部の最上位階層には「http:domain1」と記述されているため、変換部12は、「http:domain1」のうち「:」よりも後ろの「domain1」をWebサーバ4のドメイン名として特定する。また、変換部12は、「http:domain1」のうち「:」より前の「http」をプロトコル名として特定する。また、リクエストURLのパス部の最上位階層未満の階層は「A.html」と記述されているため、変換部12は、「A.html」をWebサーバ4におけるリソースのパス名として特定する。
このように特定したプロトコル名、ドメイン名及びパス名に基づき、変換部12は、リクエストURLを「http://server/http:domain1/A.html」から「http://domain1/A.html」に書き換える。なお、変換部12は、上位プロキシが設定されてない場合、リクエストURLを相対パスの記述である「A.html」とする。
変換部12は、このようにリクエストURLを書き換えたリクエストを送信する。このリクエストURL「http://domain1/A.html」のドメイン部にはWebサーバ4のドメイン名が記述されているため、変換部12は、このリクエストを中継装置3へ送信する(ステップS4)。
Webサーバ4は、中継装置3からリクエストを受信すると、受信したリクエストに含まれるリクエストURLで指定されたリソースを読み出す。その後、Webサーバ4は、読み出したリソースを含むレスポンスを送信する。ここでは、リクエストURLが「http://domain1/A.html」であるため、Webサーバ4は、最上位階層のディレクトリに格納しているHTMLファイル「A.html」を読み出す。その後、Webサーバ4は、HTMLファイル「A.html」の記述をメッセージボディに含むレスポンスを、リクエストの送信元である中継装置3へ送信する(ステップS5)。
中継装置3は、ステップS4において送信したリクエストに対するレスポンスをWebサーバ4から受信すると、受信したレスポンスをWebブラウザ2へ転送する。これにより、Webブラウザ2は、HTMLファイル「A.html」の記述をメッセージボディに含むレスポンスを中継装置3を介してWebサーバ4から取得する。
次に、図10を参照して、HTMLファイル「A.html」内に記述されたリンク先URLにWebブラウザ2からアクセスする処理の流れについて説明する。このリンク先URLは、図10に示すように、アンカータグのhref属性値の値であり、存在しない上位階層を示す相対パス「../B.html」で記述されているとする。
Webブラウザ2は、リンク先URL「http://server/http:domain1/A.html」に基づいて、相対パス「../B.html」で記述されたリンク先URLを、絶対パスで記述されるURLへ変換する。Webブラウザ2による変換後のURLは、「http://server/B.html」となる。HTMLファイル「B.html」の正しいURLの絶対パスは、「http:// server/http:domain1/B.html」である。従って、Webブラウザ2は、リンク先URLを誤ったURLに変換している。
Webブラウザ2は、このように変換したURLをリクエストURLとして含ませたリクエストを生成する。Webブラウザ2により生成されたリクエストには、Refererヘッダとして、リンク元URL「http://server/http:domain1/A.html」が含まれる。
次に、Webブラウザ2は、生成したリクエストを送信する。リクエストURLのドメイン部には中継装置3のドメイン名が記述されているため、Webブラウザ2は、このリクエストを中継装置3へ送信する(ステップS6)。
中継装置3の判定部11は、Webブラウザ2からリクエストを受信すると、受信したリクエストに含まれるリクエストURLがURL変換フォーマットに適合するか否かを判定する(ステップS7)。リクエストURL「http://server/B.html」のパス部にはプロトコル名やWebサーバ4のドメイン名が含まれていない。従って、判定部11は、リクエストURLがURL変換フォーマットに適合しないと判定する。リクエストURLがURL変換フォーマットに適合しないとき、判定部11は、Webブラウザ2から受信したリクエストに含まれるリクエストURLとRefererヘッダとを抽出部13に渡す。
抽出部13は、判定部11から受け取ったRefererヘッダからWebサーバ4のドメイン名を抽出する(ステップS8)。具体的には、抽出部13は、Refererヘッダに含まれるリンク元URLのパス部のうち最上位階層の記述のうち「:」の後ろにある記述「domain1」をWebサーバ4のドメイン名として抽出する。また、抽出部13は、最上位階層の記述のうち「:」の前にある記述「http」をプロトコル名として抽出する。抽出部13は、抽出したWebサーバ4のドメイン名及びプロトコル名を挿入部14に渡す。また、抽出部13は、判定部11から受け取ったリクエストURLを挿入部14に渡す。
挿入部14は、抽出部13によって抽出されたプロトコル名「http」とWebサーバ4のドメイン名「domain1」を、リクエストURLのドメイン部の後ろに挿入する(ステップS9)。具体的には、挿入部14は、リクエストURLのパス部の記述「B.html」を「/B.html」として最上位階層より一つ下層にずらし、最上位階層にプロトコル名「http」とWebサーバ4のドメイン名「domain1」を挿入する。これにより、リクエストURLが「http://server/B.html」から「http://server/ http:domain1/B.html」へ変換される。なお、プロトコル名「http」とWebサーバ4のドメイン名「domain1」とはコロン「:」で区切られる。
応答部15は、挿入部14により挿入処理が行われたリクエストURLに対するリダイレクト処理をWebブラウザ2に要求するレスポンスを生成し、生成したレスポンスをWebブラウザ2に送信する(ステップS10)。このレスポンスには、図8に示すように、ステータス行のステータスコードとして「301 Moved Permanently」を含み、ヘッダメッセージに「Location:http://server/ http:domain1/B.html」を含む。
次に、図11を参照して、ステップS10において中継装置3からWebブラウザ2へ送信されたレスポンスに対する処理の流れについて説明する。
Webブラウザ2は、中継装置3からのレスポンスを受信すると、中継装置3により補完処理されたリクエストURLを含むリクエストを中継装置3へ送信するリダイレクト処理を行う。具体的には、Webブラウザ2は、Locationヘッダに基づき、リダイレクト処理の対象となるリクエストURLを「http://server/http:domain1/B.html」と特定する。Locationヘッダは、中継装置3からのレスポンスのヘッダメッセージに含まれるヘッダである。Webブラウザ2は、このように特定したリクエストURLを含むリクエストを送信する(ステップS11)。リクエストURLのドメイン部には中継装置3のドメイン名が記述されているため、Webブラウザ2は、リクエストを中継装置3へ送信する。
中継装置3の判定部11は、Webブラウザ2からリクエストを受信すると、受信したリクエストに含まれるリクエストURLがURL変換フォーマットに適合するか否かを判定する(ステップS12)。リクエストURL「http://server/domain1/B.html」のドメイン部には中継装置3のドメイン名「server」が含まれ、リクエストURLのパス部の最上位階層にプロトコル名「http」とWebサーバ4のドメイン名「domain1」が含まれる。従って、判定部11は、リクエストURLが所定のフォーマットに適合すると判定する。リクエストURLが所定のフォーマットに適合するとき、判定部11は、Webブラウザ2からリクエストを変換部12に渡す。
変換部12は、ステップS3での処理と同様に、URLを変換する。すなわち、変換部12は、判定部11から受け取ったリクエストに含まれるリクエストURLを、Webサーバ4のURLに書き換える(ステップS13)。リクエストURLのパス部の最上位階層には「http:domain1」と記述され、パス部の最上位階層未満の階層は「A.html」と記述されている。そのため、変換部12は、リクエストURLを「http://server/http:domain1/B.html」から「http://domain1/B.html」に書き換える。
変換部12は、リクエストURLを書き換えたリクエストを送信する。このリクエストURLのドメイン部にはWebサーバ4のドメイン名が記述されているため、変換部12は、このリクエストを中継装置3へ送信する(ステップS14)。
Webサーバ4は、中継装置3からリクエストを受信する。受信したリクエストに含まれるリクエストURLが「http://domain1/B.html」であるため、Webサーバ4は、最上位階層のディレクトリに格納しているHTMLファイル「B.html」を読み出す。その後、Webサーバ4は、HTMLファイル「B.html」の記述をメッセージボディに含むレスポンスを、リクエストの送信元である中継装置3へ送信する(ステップS15)。
中継装置3は、ステップS11において送信したリクエストに対するレスポンスをWebサーバ4から受信すると、受信したレスポンスをWebブラウザ2へ転送する。これにより、Webブラウザは、HTMLファイル「B.html」の記述をメッセージボディに含むレスポンスを中継装置3を介してWebサーバ4から取得する。
[実施例1の効果]
上述してきたように、中継装置3は、Webブラウザ2から受信したリクエストに含まれるリクエストURLが所定のフォーマットに適合するか否かを判定する。リクエストURLが所定のフォーマットに適合しないとき、中継装置3は、リクエストに含まれるリンク元URLからWebサーバ4のドメイン名を抽出する。中継装置3は、抽出したWebサーバ4のドメイン名を、リクエストURLのドメイン部の後ろに挿入する。これにより、リクエストURLを正しいURLに補完することができる。
また、中継装置3は、リダイレクト処理を要求するレスポンスをWebブラウザ2に送信する。このレスポンスは、挿入処理により補完されたリクエストURLに対するリダイレクト処理をWebブラウザ2に要求するレスポンスである。Webブラウザ2は、受信したレスポンスに基づいて、リダイレクト処理を行うことで、Webサーバ4からリソースを取得することができる。このように、中継装置3は、存在しない上位階層を示す相対パスに基づくリクエストがWebブラウザ2から送信された場合であっても、Webブラウザ2に正しい絶対パスでのリクエストを送信させることができる。
上述の実施例1では、リクエストURLがURL変換フォーマットに適合しない場合、RefererヘッダからWebサーバ4のドメイン名を抽出して、リクエストURLを補完することとした。しかし、Webブラウザ2から送信されるリクエストにRefererヘッダが含まれない場合がある。
そこで、本実施例2の中継装置では、Webブラウザ2から受信したリクエストの履歴である通信ログを参照することで、Refererヘッダが取得できない場合であっても、リクエストURLを補完可能としている。以下、実施例2の中継装置の構成及び処理の流れについて具体的に説明する。
[中継装置の構成]
次に、図12〜図14を用いて、実施例2に係る中継装置3Aの構成を説明する。図12は、実施例2に係る中継装置3Aの構成を示すブロック図である。図11は、実施例2に係る中継装置3Aの記憶部16Aに記憶される通信ログの例を示す図である。図12は、実施例2に係る中継装置3Aの判定部11Aの処理を説明する図である。
図12に示すように、実施例2に係る中継装置3Aは、判定部11A、変換部12A、抽出部13A、挿入部14A、応答部15A、記憶部16Aを備える。以下にこれらの各部の処理を説明する。
判定部11Aは、Webブラウザ2から受信したリクエストの履歴を通信ログとして記憶部16Aに記憶する。図13に記憶部16Aに記憶される通信ログの一例を示す。図13に示すように、記憶部16Aには、リクエストURL及びリクエストの内容が日付互いに関連付けられた情報が、Webブラウザ2から受信したリクエスト毎に、通信ログとして記憶される。なお、リクエストの内容には、リクエスト行及びヘッダメッセージの情報が含まれる。
図14に、判定部11Aによる処理の手順を示す図を示す。図14に示すように、判定部11Aは、Webブラウザ2からリクエストを受信したか否かを判定する(ステップS20)。Webブラウザ2からリクエストを受信していないと判定すると(ステップS20否定)、判定部11Aは、処理をステップS20に戻す。一方、Webブラウザ2からリクエストを受信したと判定すると(ステップS20肯定)、判定部11Aは、受信したリクエストの情報を通信ログとして記憶部16Aに記憶する(ステップS21)。
次に、判定部11Aは、Webブラウザ2から受信したリクエストに含まれるリクエストURLがURL変換フォーマットに適合するか否かを判定する(ステップS22)。この処理は、実施例1の判定部11と同様の処理である。
リクエストURLがURL変換フォーマットに適合していると判定すると(ステップS22肯定)、判定部11Aは、変換部12Aにリクエストを渡す(ステップS23)。一方、リクエストURLがURL変換フォーマットに適合していないと判定すると(ステップS22否定)、判定部11Aは、Webブラウザから受信したリクエストにRefererヘッダが含まれているか否かを判定する(ステップS24)。
リクエストにRefererヘッダが含まれていると判定すると(ステップS24肯定)、判定部11Aは、リクエストURLとリンク元URLとを抽出部13Aに渡す(ステップS25)。抽出部13Aに渡されるリクエストURLは、ステップS20で受信されたリクエストに含まれるリクエストURLである。また、抽出部13Aに渡されるリンク元URLは、Refererヘッダに含まれる情報である。一方、リクエストにRefererヘッダが含まれていないと判定すると(ステップS24否定)、判定部11Aは、通信ログURLを記憶部16Aから読み出す(ステップS26)。通信ログURLとは、URL変換フォーマットに沿ったリクエストURLのうち記憶部16Aに記憶された日付が最も新しいリクエストURLである。例えば、図13に示すような通信ログが記憶部16Aに記憶されているとき、通信ログURLとして判定部11Aにより読み出されるリクエストURLは、「http://server/http:domain1/E.html」である。
ステップS26の処理が終了すると、判定部11Aは、リクエストURLと記憶部16Aから読み出した通信ログURLとを、抽出部13Aに渡す(ステップS27)。抽出部13Aに渡されるリクエストURLは、ステップS20で受信されたリクエストに含まれるリクエストURLである。ステップS23,S25,S27の処理が終了すると、判定部11Aは、処理をステップS20に戻す。
変換部12Aは、実施例1の変換部12と同様の処理を行う。すなわち、変換部12Aは、判定部11Aから受け取ったリクエストに含まれる情報のうちリクエストURLを、Webサーバ4のURLに書き換える。変換部12は、このように書き換えたリクエストURLを含むリクエストをWebサーバ4にネットワーク5を介して送信する。
抽出部13Aは、実施例1の抽出部13の処理と同様に、判定部11AからリクエストURLとRefererヘッダを受け取った場合、Refererヘッダからプロトコル名とWebサーバ4のドメイン名を抽出する。さらに、抽出部13は、実施例1の抽出部13の処理と同様に、リクエストURLと抽出したプロトコル名とWebサーバ4のドメイン名とを挿入部14に渡す。
一方、判定部11からリクエストURLと通信ログURLとを受け取った場合、抽出部13Aは、通信ログURLからWebサーバ4のドメイン名を抽出する。具体的には、抽出部13Aは、通信ログURLのパス部のうち最上位階層の記述のうち「:」の後ろにある記述をWebサーバ4のドメイン名として抽出する。例えば、通信ログURLが「http://server/http:domain1/A.html」である場合、抽出部13Aは、最上位階層の記述「http:domain1」のうち、「domain1」をWebサーバ4のドメイン名として抽出する。また、抽出部13Aは、最上位階層の記述のうち「:」の前にある記述をプロトコル名として抽出する。例えば、通信ログURLが「http://server/http:domain1/A.html」である場合、抽出部13Aは、「http」をプロトコル名として抽出する。抽出部13Aは、抽出したWebサーバ4のドメイン名とプロトコル名を挿入部14に渡す。また、抽出部13Aは、判定部11Aから受け取ったリクエストURLを挿入部14Aに渡す。
挿入部14Aは、実施例1の挿入部14の処理と同様に、抽出部13Aによって抽出されたWebサーバ4のドメイン名とプロトコル名を、リクエストURLのドメイン部の後ろに挿入する。
応答部15Aは、実施例1の応答部15と同様に、挿入部14Aにより挿入処理が行われたリクエストURLに対するリダイレクト処理をWebブラウザ2に要求するレスポンスをWebブラウザ2に送信する。
[中継装置による処理]
次に、図15及び図16を用いて、実施例2に係る中継装置3Aによる処理を説明する。図15及び図16は、実施例2に係る中継装置3Aの処理の流れを示すシーケンス図である。
まず、図15を参照して、中継装置3Aを介してWebブラウザ2がHTMLファイル「A.html」を取得する処理の流れについて説明する。なお、図15に示すステップS30,S31,S33〜S35の処理は、図9に示す実施例1のステップS1〜S5と同様の処理である。
図15に示すように、URL「http://server/http:domain1/D.html」がリクエスト対象として指定された場合、Webブラウザ2は、リクエストを中継装置3Aへ送信する(ステップS30)。このリクエストは、リクエストURLとして「http://server/http:domain1/D.html」を含む。
中継装置3Aの判定部11Aは、Webブラウザ2からリクエストを受信すると、受信したリクエストに含まれるリクエストURLがURL変換フォーマットに適合するか否かを判定する(ステップS31)。リクエストURLがURL変換フォーマットに適合するとき、判定部11Aは、Webブラウザ2からリクエストを変換部12Aに渡す。
また、判定部11Aは、Webブラウザ2からリクエストを受信すると、受信したリクエストの情報を通信ログとして記憶部16Aに記憶する(ステップS32)。通信ログは、図13に示すように、受信したリクエストを受信した日時、受信したリクエストに含まれるリクエストURL及びリクエストの内容が互いに関連付けられた情報である。
変換部12Aは、URLを変換する。すなわち、変換部12Aは、判定部11Aから受け取ったリクエストに含まれる情報のうちリクエストURLをWebサーバ4のURLに書き換える(ステップS33)。変換部12Aは、リクエストURLを書き換えたリクエストを中継装置3Aへ送信する(ステップS34)。
Webサーバ4は、中継装置3Aからリクエストを受信すると、受信したリクエストに含まれるリクエストURLで指定されたHTMLファイル「D.html」を読み出す。その後、Webサーバ4は、読み出したHTMLファイル「D.html」の記述を含むレスポンスを中継装置3Aへ送信する(ステップS35)。
中継装置3Aは、ステップS35において送信したリクエストに対するレスポンスをWebサーバ4から受信すると、受信したレスポンスをWebブラウザ2へ転送する。これにより、Webブラウザは、HTMLファイル「D.html」の記述をメッセージボディに含むレスポンスを中継装置3Aを介してWebサーバ4から取得する。
次に、図16を参照して、HTMLファイル「D.html」内に記述されたリンク先URLにWebブラウザ2からアクセスする処理の流れについて説明する。なお、図16に示すS39,S40の処理は、図10に示す実施例1のステップS9,S10と同様の処理である。
図16に示すように、HTMLファイル「D.html」内に、リフレッシュ・メタタグ(refresh meta tag)が記述されているとする。この場合、Webブラウザ2は、このリフレッシュ・メタタグに規定されたリンク先URLをリクエストURLとしてリクエストを送信する(ステップS36)。図16に示すリフレッシュ・メタタグには、相対パスで記述されたURL「../E.html」がリンク先URLとして規定され、待ち時間が0秒として規定されている。従って、Webブラウザ2は、リクエストURLとして「http://server/E.html」を含むリクエストを中継装置3へ送信する。なお、待ち時間とは、HTMLファイル「D.html」を取得してから、リンク先URLをリクエストURLに含むリクエストを送信する処理を行うまでの待ち時間である。
中継装置3Aの判定部11Aは、Webブラウザ2からリクエストを受信すると、受信したリクエストに含まれるリクエストURLがURL変換フォーマットに適合するか否かを判定する(ステップS37)。リクエストURL「http://server/E.html」のパス部にはWebサーバ4のドメイン名「domain1」が含まれていない。従って、判定部11Aは、リクエストURLがURL変換フォーマットに適合しないと判定する。
リクエストURLがURL変換フォーマットに適合しないとき、判定部11Aは、記憶部16Aから通信ログURLを読み出す。判定部11Aは、読み出した通信ログURLと受信したリクエストのリクエストURLとを抽出部13Aに渡す。通信ログURLとは、URL変換フォーマットに沿ったリクエストURLのうち記憶部16Aに記憶された日付が最も新しいリクエストURLである。ここでは、図13に示すような通信ログが記憶部16Aに記憶されているとする。従って、判定部11Aにより通信ログURLとして記憶部16Aから読み出されるリクエストURLは、「http://server/http:domain1/D.html」である。
抽出部13Aは、判定部11Aから受け取った通信ログURLからWebサーバ4のドメイン名を抽出する(ステップS38)。具体的には、抽出部13Aは、通信ログURLのパス部のうち最上位階層の記述のうち「:」の後ろにある記述「domain1」をWebサーバ4のドメイン名として抽出する。また、抽出部13Aは、最上位階層の記述のうち「:」の前にある記述「http」をプロトコル名として抽出する。抽出部13Aは、抽出したプロトコル名及びWebサーバ4のドメイン名を挿入部14Aに渡す。また、抽出部13Aは、判定部11Aから受け取ったリクエストURLを挿入部14Aに渡す。
挿入部14Aは、実施例1の挿入部14Aと同様に、抽出部13Aによって抽出されたプロトコル名「http」とWebサーバ4のドメイン名「domain1」を、リクエストURLのドメイン部の後ろに挿入する(ステップS39)。これにより、リクエストURLが「http://server/E.html」から「http://server/ http:domain1/E.html」へ変換される。
応答部15Aは、挿入処理により補完されたリクエストURLに対するリダイレクト処理をWebブラウザ2に要求するレスポンスをWebブラウザ2に送信する(ステップS40)。このレスポンスには、ステータス行のステータスコードとして「301 Moved Permanently」が含まれ、さらに、ヘッダメッセージに「Location:http://server/ http:domain1/E.html」が含まれる。
Webブラウザ2は、中継装置3からのレスポンスを受信すると、中継装置3により補完されたリクエストURL「http://server/ http:domain1/E.html」を含むリクエストを中継装置3へ送信する。これにより、Webブラウザ2は、HTMLファイル「E.html」をWebサーバ4から取得することが可能となる。
このように、中継装置3Aは、Webブラウザ2から受信したリクエストの情報を通信ログとして記憶する記憶部16Aを備えている。そして、中継装置3Aは、Refererヘッダがリクエストに含まれていないとき、記憶部16Aに記憶されたリクエストURLからWebサーバ4のドメイン名を抽出する。そのため、この中継装置3Aでは、Refererヘッダが含まれないリクエスト場合であっても、Webブラウザ2に正しい絶対パスでのリクエストを再送信させることができる。
上述の実施例1,2では、中継装置において、誤ったリクエストURLを補完して正しいリクエストURLに変換し、Webブラウザに正しいリクエストURLにリダイレクト処理をさせる。
一方、実施例3の中継装置では、Webブラウザにリダイレクト処理を行うことに代えて、中継装置においてリクエストを変換して直接Webサーバへリクエストを送信する。このようにすることで、リダイレクト処理にかかる時間を省くことができ、Webサーバからリソースを迅速に取得することができる。以下、実施例3の中継装置の構成及び処理の流れについて具体的に説明する。
[中継装置の構成]
次に、図17を用いて、実施例3に係る中継装置3Bの構成を説明する。図17は、実施例3に係る中継装置3Bの構成を示すブロック図である。
図17に示すように、実施例3に係る中継装置3Bは、判定部11B、変換部12B、抽出部13B、挿入部14B、記憶部16Bを備える。以下にこれらの各部の処理を説明する。
判定部11Bは、実施例2の判定部11Aの処理に加え、さらに、挿入部14BにWebブラウザ2から受信したリクエストを渡す処理を行う。抽出部13Bは、実施例2の抽出部13Bと同様の処理を行う。
変換部12Bは、実施例2の変換部12Bの処理に加え、さらに、挿入部14Bから受け取ったリクエストを変換する。すなわち、変換部12Bは、判定部11Bから受け取ったリクエストの変換に加え、挿入部14Bから受け取ったリクエストの変換も行う。リクエストの変換は、リクエストURLをWebサーバ4のURLに置き換えることによって行う。なお、挿入部14Bから受け取ったリクエストに対する変換は、判定部11Bから受け取ったリクエストに対する変換と同様の処理で行う。変換部12Bは、このように、変換したリクエストをWebサーバ4へ送信する。
挿入部14Bは、実施例2の挿入部14Aの処理に加え、変換したリクエストURLを含むリクエストを生成する。具体的には、挿入部14Bは、判定部11Bから受け取ったリクエストに含まれる情報のうちリクエストURLを、変換したリクエストURLに置き換える。挿入部14Bは、このようにリクエストURLを置き換えたリクエストを変換部12Bに渡す。
[中継装置による処理]
次に、図18を用いて、実施例3に係る中継装置3Bによる処理を説明する。図18は、実施例3に係る中継装置3Bの処理の流れを示すシーケンス図である。なお、図18に示すS60〜S63の処理は、図16に示す実施例2のステップS36〜S39と同様の処理である。
図18では、HTMLファイル「D.html」内に記述されたリンク先URLにWebブラウザ2からアクセスする処理の流れについて説明する。図18に示すように、HTMLファイル「D.html」内に、リフレッシュ・メタタグ(refresh meta tag)が記述されているとする。Webブラウザ2は、このメタタグに規定されたリンク先URLを相対パスによる記述から絶対パスによる記述へ変換する。その後、Webブラウザ2は、このように変換したリクエストURL「http://server/E.html」を含むリクエストを送信する(ステップS60)。
中継装置3Bの判定部11Bは、Webブラウザ2からリクエストを受信すると、受信したリクエストに含まれるリクエストURLがURL変換フォーマットに適合するか否かを判定する(ステップS61)。リクエストURL「http://server/E.html」のパス部にはWebサーバ4のドメイン名「domain1」が含まれていない。従って、判定部11Bは、リクエストURLがURL変換フォーマットに適合しないと判定する。次に、判定部11Bは、記憶部16Bから通信ログURLとして「http://server/http:domain1/D.html」を読み出す。判定部11Bは、読み出した通信ログURLとリクエストURLとを抽出部13Bに渡す。
抽出部13Bは、判定部11Bから受け取った通信ログURLからプロトコル名とWebサーバ4のドメイン名を抽出する(ステップS62)。ここで抽出されるドメイン名は「domain1」であり、プロトコル名は「http」である。抽出部13Bは、リクエストURL、ドメイン名及びプロトコル名を挿入部14Bに渡す。
挿入部14Bは、抽出部13Bによって抽出されたプロトコル名「http」とWebサーバ4のドメイン名「domain1」を、リクエストURLのドメイン部の後ろに挿入する(ステップS63)。これにより、リクエストURLが「http://server/E.html」から「http://server/ http:domain1/E.html」へ変換される。
さらに、挿入部14Bは、判定部11Bから受け取ったリクエストに含まれる情報のうちリクエストURLを、変換したリクエストURL「http://server/ http:domain1/E.html」へ置き換える。その後、挿入部14Bは、リクエストURLを置き換えたリクエストを変換部12Bへ渡す。
変換部12Bは、URLを変換する。すなわち、変換部12Bは、判定部11Bから受け取ったリクエストに含まれる情報のうちリクエストURLをWebサーバ4のURLに書き換える(ステップS64)。リクエストURLのパス部の最上位階層には「http:domain1」と記述されているため、変換部12は、「http:domain1」のうち「:」よりも後ろの「domain1」をWebサーバ4のドメイン名として特定する。また、変換部12は、「http:domain1」のうち「:」より前の「http」をプロトコル名として特定する。また、リクエストURLのパス部の最上位階層未満の階層は「A.html」と記述されているため、変換部12は、「E.html」をWebサーバ4におけるリソースのパス名として特定する。
このように特定したプロトコル名、ドメイン名及びパス名に基づき、変換部12Bは、リクエストURLを「http://server/http:domain1/E.html」から「http://domain1/ E.html」に書き換える。なお、変換部12Bは、上位プロキシが設定されてない場合、リクエストURLを相対パスの記述である「E.html」とする。
変換部12Bは、リクエストURLを書き換えたリクエストを送信する。このリクエストURLのドメイン部にはWebサーバ4のドメイン名が記述されているため、変換部12Bは、このリクエストをWebサーバ4へ送信する(ステップS65)。
Webサーバ4は、中継装置3からリクエストを受信すると、HTMLファイル「E.html」の記述をメッセージボディに含むレスポンスを、リクエストの送信元である中継装置3へ送信する(ステップS66)。中継装置3は、このレスポンスをWebブラウザ2へ転送する。これにより、Webブラウザ2は、HTMLファイル「E.html」を取得する。
このように、実施例3の中継装置3Bでは、存在しない上位階層を示す相対パスに基づくリクエストに含まれるリクエストURLを補完し、直接Webサーバへ送信する。そのため、リダイレクト処理にかかる時間を省くことができ、Webサーバからリソースを迅速に取得することができる。
さて、これまで実施例1〜3について説明したが、上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例4として他の実施例を説明する。
(1)システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図19に示すように、端末装置1’にはローカルプロシキとしての中継装置を配置せず、中継装置3Cを外部プロキシとすることもできる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(2)プログラム
図6,12,17,19の中継装置3,3A〜3Cの処理をプログラムにより実行する場合、図20に示すような情報処理装置(コンピュータ)が用いられる。図20の情報処理装置は、Central Processing Unit(CPU)51、メモリ52、入力装置53、出力装置54、外部記憶装置55、可搬記憶媒体駆動装置56、およびネットワーク接続装置57を有し、これらは互いに接続されている。
メモリ52は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)等を含み、処理に用いられるプログラムおよびデータを格納する。CPU51は、メモリ52を利用してプログラムを実行することにより、中継装置と同様の処理を行う。
入力装置53は、例えば、キーボード、ポインティングデバイス等であり、オペレータからの指示や情報の入力に用いられる。出力装置54は、例えば、ディスプレイ、プリンタ、スピーカ等であり、オペレータへの問い合わせや処理結果の出力に用いられる。
外部記憶装置55は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。情報処理装置は、この外部記憶装置55に、プログラムおよびデータを格納しておき、必要に応じて、それらをメモリ52にロードして使用する。
可搬記憶媒体駆動装置56は、可搬記録媒体58の記録内容にアクセスする。可搬記録媒体58は、メモリカード、フレキシブルディスク、光ディスク、光磁気ディスク等の任意のコンピュータ読み取り可能な記録媒体である。オペレータは、この可搬記録媒体58にプログラムおよびデータを格納しておき、必要に応じて、それらをメモリ52にロードして使用する。
ネットワーク接続装置57は、インターネット等の通信ネットワークに接続され、Webブラウザ2及びWebサーバ4との通信に伴うデータ変換を行う。情報処理装置に、Webブラウザ2の機能と中継装置3の機能とが搭載される場合、Webブラウザ2と中継装置3との通信はネットワーク接続装置57を介して行われる。また、情報処理装置は、必要に応じて、プログラムおよびデータを外部の装置からネットワーク接続装置57を介して受け取り、それらをメモリ52にロードして使用する。
(3)その他
実施例1〜3では、WebサーバからHTMLファイルを受信したとき、このHTMLファイルに含まれるリンク先URLをWebブラウザで変換する。これにより、Webブラウザからのリクエストは中継装置を介してWebサーバへ送信される。しかし、Webブラウザでリンク先URLの変換を行うのではなく、中継装置でリンク先URLの変換を行うようにしてもよい。すなわち、Webサーバから送信されるHTMLファイルを中継装置が受信したとき、受信したHTMLファイルに含まれるリンク先URLを中継装置で変換する。そして、その後、変換後のHTMLファイルをWebブラウザへ送信する。
また、実施例1〜3では、URL変換フォーマットの例として、リクエストURLのパス部の最上位階層が「プロトコル名:Webサーバのドメイン名)」である例を示した。しかし、URL変換フォーマットはこれに限られない。例えば、リクエストURLのパス部の最上位階層が「Webサーバのドメイン名:プロトコル名)」や「プロトコル名−Webサーバのドメイン名)」などをURL変換フォーマットとしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)ブラウザから受信したリクエストに含まれる資源識別子が所定のフォーマットに適合するか否かを判定する判定部と、
前記資源識別子が所定のフォーマットに適合しないと前記判定部により判定されたとき、前記資源識別子のリンク元である資源識別子に含まれるサーバのドメイン名を前記リクエストから抽出する抽出部と、
前記抽出部によって抽出された前記サーバのドメイン名を、前記リクエストに含まれる資源識別子のドメイン部の後ろに挿入する挿入処理を行う挿入部と、
を備えた中継装置。
(付記2)前記リクエストに含まれる資源識別子を記憶する記憶部をさらに備え、
前記抽出部は、前記リンク元である資源識別子が前記リクエストに含まれていないとき、前記記憶部に記憶され、かつ前記所定のフォーマットに適合する資源識別子のうち前記記憶部への記憶が最新の資源識別子から前記サーバのドメイン名を抽出することを特徴とする付記1に記載の中継装置。
(付記3)前記挿入処理が行われた資源識別子に対するリダイレクト処理を要求するレスポンスを前記ブラウザに送信する応答部をさらに備えたことを特徴とする付記1又は2に記載の中継装置。
(付記4)前記挿入処理が行われた資源識別子のドメイン部を、当該中継装置のドメイン名から前記挿入処理が行われた資源識別子に含まれるサーバのドメイン名へ置き換えて、前記リクエストを変換する変換部をさらに備えたことを特徴とする付記1又は2に記載の中継装置。
(付記5)コンピュータによって実行される中継方法であって、
ブラウザから受信したリクエストに含まれる資源識別子が所定のフォーマットに適合するか否かを判定し、
前記資源識別子が所定のフォーマットに適合しないと判定されたとき、前記資源識別子のリンク元である資源識別子に含まれるサーバのドメイン名を前記リクエストから抽出し、
前記抽出された前記サーバのドメイン名を、前記資源識別子のドメイン部の後ろに挿入することを特徴とする中継方法。
(付記6)前記リクエストに含まれる資源識別子を記憶部に記憶し、
前記リンク元である資源識別子が前記リクエストに含まれていないとき、前記記憶部に記憶され、かつ前記所定のフォーマットに適合する資源識別子のうち前記記憶部への記憶が最新の資源識別子から前記サーバのドメイン名を抽出することを特徴とする付記5に記載の中継方法。
(付記7)前記挿入する処理が行われた資源識別子に対するリダイレクト処理を要求するレスポンスを前記ブラウザに送信することを特徴とする付記5又は6に記載の中継方法。
(付記8)前記挿入する処理が行われた資源識別子のドメイン部を、当該中継装置のドメイン名から前記挿入処理が行われた資源識別子に含まれるサーバのドメイン名へ置き換えて、前記リクエストを変換することを特徴とする付記5又は6に記載の中継方法。
(付記9)コンピュータに、
ブラウザから受信したリクエストに含まれる資源識別子が所定のフォーマットに適合するか否かを判定し、
前記資源識別子が所定のフォーマットに適合しないと前記判定工程により判定されたとき、前記資源識別子のリンク元である資源識別子に含まれるサーバのドメイン名を前記リクエストから抽出し、
前記抽出された前記サーバのドメイン名を、前記資源識別子のドメイン部の後ろに挿入する処理を実行させることを特徴とする中継プログラム。
(付記10)コンピュータに、前記リクエストに含まれる資源識別子を記憶部に記憶し、
前記リンク元である資源識別子が前記リクエストに含まれていないとき、前記記憶部に記憶され、かつ前記所定のフォーマットに適合する資源識別子のうち前記記憶部への記憶が最新の資源識別子から前記サーバのドメイン名を抽出する処理を実行させることを特徴とする付記9に記載の中継プログラム。
(付記11)コンピュータに、前記挿入処理が行われた資源識別子に対するリダイレクト処理を要求するレスポンスを前記ブラウザに送信する処理を実行させることを特徴とする付記9又は10に記載の中継プログラム。
(付記12)コンピュータに、前記挿入処理が行われた資源識別子のドメイン部を、当該中継装置のドメイン名から前記挿入処理が行われた資源識別子に含まれるサーバのドメイン名へ置き換えて、前記リクエストを変換することを特徴とする付記9又は10に記載の中継プログラム。
1,1’ 端末装置
2 Webブラウザ
3,3A,3B,3C 中継装置
4 Webサーバ
5 ネットワーク
11,11A,11B 判定部
12,12A,12B 変換部
13,13A,13B 抽出部
14,14A,14B 挿入部
15,15A 応答部
16A 記憶部

Claims (6)

  1. ブラウザから受信したリクエストに含まれる資源識別子が所定のフォーマットに適合するか否かを判定する判定部と、
    前記資源識別子が所定のフォーマットに適合しないと前記判定部により判定されたとき、前記資源識別子のリンク元である資源識別子に含まれるサーバのドメイン名を前記リクエストから抽出する抽出部と、
    前記抽出部によって抽出された前記サーバのドメイン名を、前記リクエストに含まれる資源識別子のドメイン部の後ろに挿入する挿入処理を行う挿入部と、
    を備えた中継装置。
  2. 前記リクエストに含まれる資源識別子を記憶する記憶部をさらに備え、
    前記抽出部は、前記リンク元である資源識別子が前記リクエストに含まれていないとき、前記記憶部に記憶され、かつ前記所定のフォーマットに適合する資源識別子のうち前記記憶部への記憶が最新の資源識別子から前記サーバのドメイン名を抽出することを特徴とする請求項1に記載の中継装置。
  3. 前記挿入処理が行われた資源識別子に対するリダイレクト処理を要求するレスポンスを前記ブラウザに送信する応答部をさらに備えたことを特徴とする請求項1又は2に記載の中継装置。
  4. 前記挿入処理が行われた資源識別子のドメイン部を、当該中継装置のドメイン名から前記挿入処理が行われた資源識別子に含まれるサーバのドメイン名へ置き換えて、前記リクエストを変換する変換部をさらに備えたことを特徴とする請求項1又は2に記載の中継装置。
  5. コンピュータによって実行される中継方法であって、
    ブラウザから受信したリクエストに含まれる資源識別子が所定のフォーマットに適合するか否かを判定し、
    前記資源識別子が所定のフォーマットに適合しないと判定されたとき、前記資源識別子のリンク元である資源識別子に含まれるサーバのドメイン名を前記リクエストから抽出し、
    前記抽出された前記サーバのドメイン名を、前記資源識別子のドメイン部の後ろに挿入することを特徴とする中継方法。
  6. コンピュータに、
    ブラウザから受信したリクエストに含まれる資源識別子が所定のフォーマットに適合するか否かを判定し、
    前記資源識別子が所定のフォーマットに適合しないと判定されたとき、前記資源識別子のリンク元である資源識別子に含まれるサーバのドメイン名を前記リクエストから抽出し、
    前記抽出された前記サーバのドメイン名を、前記資源識別子のドメイン部の後ろに挿入する処理を実行させることを特徴とする中継プログラム。
JP2010192855A 2010-08-30 2010-08-30 中継装置、中継方法及び中継プログラム Expired - Fee Related JP5488349B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010192855A JP5488349B2 (ja) 2010-08-30 2010-08-30 中継装置、中継方法及び中継プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010192855A JP5488349B2 (ja) 2010-08-30 2010-08-30 中継装置、中継方法及び中継プログラム

Publications (2)

Publication Number Publication Date
JP2012048679A JP2012048679A (ja) 2012-03-08
JP5488349B2 true JP5488349B2 (ja) 2014-05-14

Family

ID=45903425

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010192855A Expired - Fee Related JP5488349B2 (ja) 2010-08-30 2010-08-30 中継装置、中継方法及び中継プログラム

Country Status (1)

Country Link
JP (1) JP5488349B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9313252B2 (en) 2012-04-20 2016-04-12 Microsoft Technology Licensing, Llc Binding crud-type protocols in distributed agreement protocols
JP6151508B2 (ja) * 2012-12-10 2017-06-21 株式会社ディアイティ 中継装置、中継方法および中継プログラム
JP6081845B2 (ja) * 2013-03-29 2017-02-15 Kddi株式会社 Webコンテンツの配信装置
JP6081847B2 (ja) * 2013-03-29 2017-02-15 Kddi株式会社 Webコンテンツの配信装置
US10681147B2 (en) * 2016-08-15 2020-06-09 Saturn Licensing Llc URLs for acquiring or transmitting data
JP6317506B2 (ja) * 2017-05-24 2018-04-25 株式会社ディアイティ 中継装置、中継方法および中継プログラム
JP6608476B2 (ja) * 2018-03-29 2019-11-20 エヌ・ティ・ティ・コミュニケーションズ株式会社 中継装置、中継方法および中継プログラム

Also Published As

Publication number Publication date
JP2012048679A (ja) 2012-03-08

Similar Documents

Publication Publication Date Title
JP5488349B2 (ja) 中継装置、中継方法及び中継プログラム
US8589484B2 (en) Method for optimizing a web content proxy server and devices thereof
US7277914B2 (en) Proxy server apparatus and method for providing service using the same
CN100456722C (zh) 用于提供Web服务的方法、装置以及程序产品
CN106294379A (zh) 一种页面的加载方法、装置和系统
CN106462611A (zh) 网络访问性能增强
CN101267299A (zh) 一种安全显示网页中数据的方法和系统
US10089395B2 (en) Third party content integration for search engine optimization
JP5347429B2 (ja) ユニフォームリソースロケータ書換方法及び装置
US20110004623A1 (en) Web page relay apparatus
Snell Prefer header for http
CN103888540A (zh) 登录信息同步方法、被同步和同步网络服务器
JP2006018795A (ja) Web共有システム、Web共有方法、Web共有プログラム、中継サーバ、及びWWWブラウザ表示装置
US8407583B2 (en) Information processing apparatus, information processing method, computer-readable medium and computer data signal
JP6317506B2 (ja) 中継装置、中継方法および中継プログラム
Waher et al. Xep-0322: Efficient xml interchange (exi) format
US8200748B2 (en) System and method for directing data retrieval requests to a data retrieval device
Waher et al. Efficient XML Interchange (EXI) Format
JP6151508B2 (ja) 中継装置、中継方法および中継プログラム
JP6608476B2 (ja) 中継装置、中継方法および中継プログラム
JP5565197B2 (ja) Webアプリケーションの連携方法、連携装置、および連携プログラム
CN101506805A (zh) 多格式数据交换的方法和装置
JP2010181946A (ja) 通信システム、端末装置、コンテンツ取得方法およびプログラム
US7689669B2 (en) System and method for accessing a process control automation device from a network client
JP5699721B2 (ja) リクエスト処理プログラム、リクエスト処理装置及びリクエスト処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140123

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140210

R150 Certificate of patent or registration of utility model

Ref document number: 5488349

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees