ホームページ  >  記事  >  バックエンド開発  >  PythonでのCookieの処理 (1) Cookieライブラリ

PythonでのCookieの処理 (1) Cookieライブラリ

黄舟
黄舟オリジナル
2016-12-23 17:30:321580ブラウズ

Cookieは、セッション、ユーザーログイン時の状態管理、および関連機能を実装するためにサーバーによって使用されます。ユーザーのブラウザに Cookie をインストールするために、HTTP サーバーは次のような HTTP ヘッダーを HTTP 応答に追加します:

Set-Cookie: session=8345234;expires=Sun, 15-Nov-2013 15:00:00 GMT ; path= /;domain=baidu.com

expires は Cookie のライフサイクル、path は Cookie の有効なパス、domain は Cookie の有効なドメインです。

Path "path" は次の目的で使用されます。 Cookie を読み取れる最上位ディレクトリを設定します。 Cookie のパスを Web ページの最上位ディレクトリに設定すると、そのディレクトリ内のすべての Web ページが Cookie にアクセスできるようになります。

方法: Cookie に path=/ を追加します。「food」ディレクトリ内の Web ページのみでこの Cookie を使用する場合は、 path=/food を追加します。

domain: 一部の Web サイトには、小さなドメイン名が多数あります。たとえば、Baidu には、「news.baidu.com」、「zhidao.baidu.com」、「v.baidu.com」というドメイン名の下に Web ページがある場合もあります。 「baidu.com」の下にあるすべてのマシンが Cookie を読み取れるようにするには、Cookie に「domain=.baidu.com」を追加する必要があります。

ユーザーのブラウザは有効期限が切れるまで Cookie を保存し、パスとドメインに一致する次のような HTTP リクエスト ヘッダーをサーバーに送信します:

Cookie: session=8345234。

たとえば、www.baidu.com にログインする場合、Baidu サーバーから返される HTTP 応答ヘッダーの Cookie は次のとおりです:

Set-Cookie:H_PS_PSSID=4681_4567_1452_9876_4759;
Set-Cookie: BDSVRTM=74; path=/

ブラウザHTTPリクエストヘッダー:

Cookie:BAIDUID=0FD996SDFG12********107B9C227F4C:FG=1; bdshare_firstime=1384567418140; NBID =D830DD2345HH2818 A9F4134E5A2D778D3B: FG=1; H_PS_LC=4_shadu2014; H_PS_PSSID=4681_4567_1452_9876_4759

HTTP サーバーでは、key=value 文字列のエンコード形式が使用され、オプションの値は返されません。有効期限、パス、ドメインなどの属性。

Cookie 文字列は通常 HTTP_COOKIE 環境変数にあり、次のように読み取ることができます:

import osPRint "Content-type: text/plainn"
if "HTTP_COOKIE" in os.environ:
print os.environ[" HTTP_COOKIE"]
else:
print "HTTP_COOKIE not set!"

Python の Cookie モジュール (python3 では http.cookies) は、特別な辞書のようなオブジェクト SimpleCookie を提供します。モーセル。

各 Morsel には、名前、値、およびオプションの属性 (有効期限、パス、ドメイン、コメント、最大保存期間、安全性、バージョン、httponly) があります。

SimpleCookie は、output() メソッドを使用して HTTP ヘッダーの形式で Cookie データ出力を作成し、js_output() メソッドを使用して JavaScript コードを含む文字列を生成できます。

HTTP_COOKIEでCookieを生成:

cookie=Cookie.SimpleCookie(os.environ['HTTP_COOKIE'])
print cookie.output()

Cookieの設定:

Cookieのインポート
日時のインポート
ランダムのインポート

有効期限= datetime.datetime.now() + datetime.timedelta(days=30)
cookie = Cookie.SimpleCookie()
cookie["セッション"] = ランダム.randint(1,1000000000)
cookie["セッション"]["ドメイン"] = ".baidu.com"
cookie["session"]["path"] = "/"
cookie["session"]["expires"] = 有効期限.strftime("%a, %d- %b-%Y %H:%M:%S PST")

print "コンテンツタイプ: text/plain"
print cookie.output()
print
print "Cookie セット: " + cookie.output( )

出力:

Content-type: text/plain
Set-Cookie: session=155209565; 有効期限=2014 年 3 月 3 日月曜日 07:42:47 PST; Cookie set with: Set-Cookie: session=155209565; Domain=.jayconrod.com;expires=Mon, 03-Mar-2014

上記は Python での Cookie の処理 (1) Cookie ライブラリの内容その他の関連コンテンツ PHP 中国語 Web サイト (www.php.cn) にご注意ください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。