0

set-cookieヘッダーを使用してサーバーから応答しようとしています

私のcgiスクリプトは次のように始まります

#!/usr/bin/env python

import json
from collections import defaultdict
import cgi
import cgitb; cgitb.enable()  # for troubleshooting
from MySQL import sql

form = cgi.FieldStorage()
mode = form.getvalue('mode')

print """Content-type: text/html\r\n"""
print """Set-Cookie: name=12345\r\n\r\n"""

ただし、Chromeでサーバーからの応答を確認すると、デバッガーは応答部分にset-cookieヘッダーを表示せず、set-cookieヘッダーはテキストの一部として応答部分に出力されます。コンテンツタイプのヘッダー...

私が何を間違えたのか分かりますか?

みんなありがとう

4

2 に答える 2

3

問題は、HTTPヘッダーと本文の間の標準の区切り文字である「Content-Type」ヘッダーの末尾に1行ではなく2行の改行を追加していることです。

代わりに、(ではなく)\r\n各ヘッダー値の最後に出力する必要があります\n\n

ヘッダーの発行が完了\r\nしたら、メッセージ本文を開始するために1つ余分に印刷する必要があります。

編集:さらに、sys.stdout.write(...)暗黙の改行が挿入されないように、printステートメントの末尾にコンマを使用または追加する必要があります。例えば、

print "Header: Value\r\n",

于 2012-12-02T10:17:54.960 に答える
0

Content-type:text/html行の前にSet-Cookie行を印刷する必要があります。

于 2017-09-21T14:09:00.857 に答える