Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/85-34dc2e3e

-件のトラックバック

-件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

2038年問題 cookieのexpire

昨日書いたスクリプトで、現在時刻から一年後をクッキーの有効期限として設定するところが
あったが、

'cookie'=>CGI::Cookie::new({'name'=> 'move',
'value'=> 'move',
'expires'=> Time.now + (cgi['flg']=='false' ? year : year*-1)
})

これ、2037年以降は、動かないのではと思い、簡単な検証スクリプトを書いてみた。

#!/usr/local/bin/ruby
n=Time.now
zero=n-n.to_i
max=2**31-1
puts (zero+max).gmtime
puts (zero+max+1).gmtime

実行結果は以下に。

Tue Jan 19 03:14:07 UTC 2038
./imax.rb:7:in `+': time + 1.000000 out of Time range (RangeError)
from ./imax.rb:7

仮に、CGI::Cookie::newを使わないで、自前でimt max + 1のexpierのcookieを返した場合、
ブラウザは対応できるのだろうか?

#!/usr/local/bin/ruby
require 'cgi'
cgi=CGI.new()
if cgi.has_key?('q') then
cgi.out(){cgi.cookies['hoge'][0]}
else
print "Status: 302 Found\r\n"
print "Location: #{ENV['SCRIPT_NAME']}?q=1\r\n"
print "Set-Cookie: hoge=hoge; expire=Tue, 19 Jan 2038 03:14:08 GMT\r\n";
print "\r\n"
end

IE,FireFox共に問題なく受けたcookieを返してきた。

でも面倒だから、2037年になったら対応しよう。
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/85-34dc2e3e

0件のトラックバック

0件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

プロフィール

kovayashi

Author:kovayashi
・嫌いなもの
 →好きなもの

・インストール
 →バンドル
・バックアップ
 →アップロード
・努力
 →チート

最近のトラックバック

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。