1-あなたのコードは意味がありません。cookie1 と cookie2 は最初の関数で定義されていません。
2- 古い cgi ライブラリを使用して印刷しようとしているようです。ヘッダー、空白行、ページ コンテンツを作成します。また、Cookie は Web サーバーによって HTTP ヘッダーとして送信され、ブラウザによって HTTP ヘッダーとして返されます。Web ページには表示されません。したがって、空白行の前に「set-cookie」データが必要です。
CGI モジュールを使用する必要がない限り、他のソリューションを検討します。CGI は基本的には死んでいます。それは古い、限定的な、標準です。サーバーを構成するのは非常に面倒です。パフォーマンスは決して素晴らしいものではありませんでした。より良いオプションがあります。
Python を使用したほとんどの (すべてではないにしても) 最新の Web 開発では、WSGI プロトコルが使用されています。( Python Web フレームワーク、WSGI および CGI がどのように適合するか、http://www.python.org/dev/peps/pep-0333/ )
Flask と Bottle は、2 つの非常に単純な WSGI フレームワークです。(Pryamid と Django は、より高度な 2 つです)。非常に重要な機能がたくさんあるだけでなく、フレームワークがペイロードをサーバーに渡す前に、それに付随する HTML 応答と HTTP ヘッダー (Cookie を含む) を簡単に指定できます。これ
http://flask.pocoo.org/docs/quickstart/
http://bottlepy.org/docs/dev/tutorial.html
もし私がcgiを使わなければならないなら、私はおそらく次のようなことをするだろう: (疑似コード)
def setup_cookie():
# try/except to read the cookie
return cookie
def headers(cookie):
# print a set-cookie header if needed
return "SetCookie: etc"
def page_content(cookie):
# maybe you want to alter the page content with a regex or something based on the cookie value
return html
cookie = setup_cookie()
print headers( cookie )
print ""
print page_content( cookie )
ただし、古い cgi 標準では、html よりもヘッダーを印刷します。つまり、コンテンツの生成がヘッダー値 (Cookie など) に影響する場合は、「印刷」する前にそれを上書きできる必要があります。