う〜ん、、色々試したのですが再現に至りませんでした。。
質問者様側のコードがどのような状況かがよくわからなかったので、こちらで実行してみたコードを挙げます。(http.server
を使っていると勝手に仮定して進めました。)
一方的な感じですみません。。
ただ、大きな相違点等があればそこを目安に考察ができると思います。
plain
1/root_dir
2├── cgi-bin
3│ ├── hellopage.py
4│ └── login.py
5├── index.html
6└── server.py
- server.py (ポート
8080
は適当につけたものです。)
python
1from http.server import HTTPServer,CGIHTTPRequestHandler
2
3class Handler(CGIHTTPRequestHandler):
4 cgi_directories = ["/cgi-bin"]
5
6httpd = HTTPServer(("", 8080), Handler)
7httpd.serve_forever()
html
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8">
5 <title>Test</title>
6 </head>
7 <body>
8 <form action="./cgi-bin/login.py" method="get">
9 ユーザーネーム : <input type="text" name="user_name" />
10 <input type="submit" value="送信" />
11 </form>
12 </body>
13</html>
python
1#!/usr/bin/env python3
2# coding: utf-8
3
4import cgi
5
6form = cgi.FieldStorage()
7user_name = form['user_name'].value
8
9print("Set-Cookie: user="+user_name)
10print("Content-type: text/html; charset=UTF-8")
11print("")
12print('<meta http-equiv="refresh" content="0;URL=/cgi-bin/hellopage.py">')
python
1#!/usr/bin/env python3
2# coding: utf-8
3
4import http.cookies as cookies
5import os
6
7cookie = cookies.SimpleCookie(os.environ.get("HTTP_COOKIE",""))
8
9print("Content-type: text/html; charset=UTF-8")
10print("")
11print(f"<body>Hello,{cookie['user'].value}</body>")
chmod -R 777 ./cgi-bin
(面倒だったので777
。とにかくforbidden errorにならない設定)は実行済みとします。

macOS High Sierra 10.13.3
Python 3.6.2
別タブで開いてもcookieにアクセスできるようにするならば、私のコードでは
python
1print("Set-Cookie: user="+user_name)
を
python
1print("Set-Cookie: user="+user_name+"; path=/")
にする必要がありました。
また一定時間の間アクセスできるようにするにはmax-age
やexpires
を設定する必要があります。
JavaScriptでcookieの有効期限を設定する:max-age, expires | UX MILK
(たまたまjsの記事を挙げましたが、要はSet-Cookie: user=hoge; path=/; max-age=300
みたいに書いて下さいということです。)
その他気になった点として、(私もこの辺りは全然詳しくないんですけど、)
アカウントとパスワードをcookieでやりとりするというのは危ないような気がします。
クッキーはPCにファイルとして保存される
ファイルとして保存されるため有効期限が(通常は)非常に長い(問題のアプリは30日)
クロスサイトスクリプティング(XSS、JavaScript挿入)に脆弱な場合簡単に盗まれる
引用元 : 解答:まちがった自動ログイン処理 yohgaki's blog
https
通信下で、POST
メソッドを使う方が安全だと思います。
cookieは自動ログイン処理用のトークンとして使うことはできるみたいです。
自動ログインの実装に見る、Cookieの取扱で注意すべき点 - Qiita
まぁ、実験段階ということでしたら全く問題はないでしょうけど、
このまま本番環境まで突っ走るつもりでしたら、今一度考え直した方がいいと思います。
長々と失礼しました。参考になれば幸いです。m(_ _)m