2012年10月8日月曜日

S3のWebサイトのリダイレクト機能をTelnetで確認してみた

スズキです。

先日、下記の通りS3でWebサイトのリダイレクト機能が利用できるようになりました。

【AWS発表】Amazon S3 がウェブサイトのリダイレクト機能をサポート
ということで、リダイレクト機能を利用した場合のHTTPリクエスト/レスポンスを
Telnetで確認してみました。

まずは"Web Site Hosting"機能が有効なS3のバケットに、下記のHTMLを配置します。
<html>
  <head>
    <meta http-equiv="Refresh" content="0; URL=/index.html"/>
  </head>
  <body>Redirect!</body>
</html>
このメタダグを利用した方法は、HTMLレベルでリダイレクトを実現する場合に
よく使われるものだと思います。(JavaScriptで実現する方法もあります)

ちなみに、このファイルのメタデータ(AWSコンソール)は次のようになっています。




実際にTelnetでアクセスすると下記のような結果になります。
# telnet www.suz-lab.com 80
Trying 27.0.1.84...
Connected to www.suz-lab.com.
Escape character is '^]'.
GET /redirect.html HTTP/1.1
Host: www.suz-lab.com
Connection: close

HTTP/1.1 200 OK
x-amz-id-2: rwwJDcMcnLQPmBufmRyvtWdvSaUvfA9LUZHpcaB3zYtSFlgdtaDQOs5zkf7yas+P
x-amz-request-id: 5D4B5DA8D408FBE9
Date: Mon, 08 Oct 2012 10:27:30 GMT
Last-Modified: Mon, 08 Oct 2012 10:18:14 GMT
ETag: "86b349cf988679198ecc5c8ad80319dd"
Content-Type: text/html
Content-Length: 120
Server: AmazonS3

<html>
  <head>
    <meta http-equiv="Refresh" content="0; URL=/index.html"/>
  </head>
  <body>Redirect!</body>
</html>
Connection closed by foreign host.
これでも、メタタグで指定したURLにリダイレクトするはするのですが、
HTTPステータスコード200(OK)となっってしまいます。

できればリダイレクトの場合は、HTTPステータスコード301(Moved Permanently)に
したいところです。

で、S3でWebサイトのリダイレクト機能です。

リダイレクト機能は、下記のように対象ファイルに対してメタデータを設定することで
実現できます。



再度Telnetで確認すると、今度は下記のようになりました。
# telnet www.suz-lab.com 80
Trying 27.0.1.84...
Connected to www.suz-lab.com.
Escape character is '^]'.
GET /redirect.html HTTP/1.1
Host: www.suz-lab.com
Connection: close

HTTP/1.1 301 Moved Permanently
x-amz-id-2: NM3/B9pOI4AMgf9Tb5wWx5LlLlvFyUPAiL4rVrzyBml+pGz1tnYnhTAiJy/kkJ/S
x-amz-request-id: 605B05309A780ADB
Date: Mon, 08 Oct 2012 10:28:49 GMT
Location: /index.html
Content-Length: 0
Server: AmazonS3

Connection closed by foreign host.
HTTPステータスコード301(Moved Permanently)になり、リダイレクトの設定が、
Locationヘッダで行われていることが確認できます。(Bodyはありません)

"Permanent Redirectパターン"に加筆するか...
--------
http://www.suz-lab.com

0 コメント: