9033


Pythonのhttp.serverでSet-Cookieを送ったのですが、pathとdomainが一致したとしても、Cookieヘッダが返ってきません。  
なぜなのでしょうか?

下記のコードです。

[code]

    
    import datetime
    import time
    import os
    import hashlib
    import http.server
    import cgi
    
    class handle(http.server.BaseHTTPRequestHandler):
        def do_POST(self):
            if self.path == "/login":
                thisyear = datetime.datetime.now().year
                ripemd160 = hashlib.new("ripemd160")
                ripemd160.update(os.urandom(800))
                session_id = ripemd160.hexdigest()
                os.environ["REQUEST_METHOD"] = "POST"
                self.send_response(303, self.responses[303][0])
                self.send_header("Content-Length", 0)
                self.send_header("Set-Cookie", "session=" + session_id + "; domain=http://127.0.0.1:8152; path=/; expires=" + time.strftime(
                    "%a, %d-%b-{0:d} %H:%M:%S GMT", time.gmtime()).format(thisyear + 2)) #有効期限は2年間
                self.send_header("Location", "/")
                self.end_headers()
                login_data = cgi.FieldStorage(self.rfile, self.headers)
                print(login_data)
    
    
    
[/code]


CC BY-SA 3.0
2015-04-10T11:46:57.613
9013
2015-04-11T04:56:43.260
2015-04-10T13:26:16.603
5246
5246
question
python http cookie
Pythonのhttp.serverでSet-CookieでセットしたはずのCookieが取得できない


Domain 属性を削除するか、 Domain 属性を 127.0.0.1 にすれば動くのではないかと思います。

Domain に "<http://127.0.0.1:8152>"
が指定されていますが、Domainに指定できるのはドメインなので、http://の部分は付けません。Cookieはポート番号を考慮しないのでポート番号
:8152 も付けられません。Domain属性の指定が正しくない場合ブラウザはクッキーを無視します。  
そもそも domain 属性は指定しなければ、現在のホスト以外にはクッキーは送信されないので domain
属性はデフォルトより広い範囲にクッキーを送信したいのでなければ必要ないのですが、本当に domain 属性をつける必要がありますか？


CC BY-SA 3.0
2015-04-10T23:05:38.897
9033
2015-04-10T23:05:38.897
5575
9013
answer