DjangoからP3Pコンパクトプライバシーポリシーを設定して、セキュリティ設定がHIGHのときにIEがサイトからのCookieを受け入れるようにするにはどうすればよいですか?つまり、コンパクトプライバシーポリシーがない限りCookieは受け入れられません。
チアーズガイ
ミドルウェアは、「すべての要求」に基づいてこのようなことを行うための好ましい方法です。たとえば、Djangoが生成するすべての応答に同じ(例)P3Pヘッダーを追加するための簡単なミドルウェアを次に示します。
settings.py:
P3P_COMPACT = 'policyref="http://www.example.com/p3p.xml", CP="NON DSP COR CURa TIA"'
MIDDLEWARE_CLASSES += ('myapp.middleware.P3PHeaderMiddleware',)
myapp / Middleware.py:
from django.conf import settings
class P3PHeaderMiddleware(object):
def process_response(self, request, response):
response['P3P'] = getattr(settings, 'P3P_COMPACT', None)
return response
応答でP3Pヘッダーを設定することにより、単一のビューで同様の効果を得ることができます。
def my_view(request):
response = render_to_response('my_template.html')
response['P3P'] = 'CP="NON DSP COR CURa TIA"'
return response
トピックを少し拡張するために、応答の一部として、CookieとP3Pヘッダーなどのヘッダーの両方が同時に送信されます。実際、内部では、Cookieは別の応答ヘッダーで設定されます。curlを使用してCookieヘッダーを確認できます。
$ curl --head http://www.google.com/
HTTP/1.1 200 OK
Date: Wed, 13 Jan 2010 00:04:59 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=d2c09762c479f94e:TM=1263341099:LM=1263341099:S=oJby3NpU4RsRfuYa; expires=Fri, 13-Jan-2012 00:04:59 GMT; path=/; domain=.google.com
Set-Cookie: NID=30=kdKrd5e-u6Xs7cUe3p4eaNDtv6SO88uBL5v6_M1XMTSRmkh7okxrWLOm-l_uZdN37PxQIe4dBlekFFVCpTFXGyIDlUrz1hEwhgVLvXfIik_VeVWGmWzKbA5qu_Zq0sOi; expires=Thu, 15-Jul-2010 00:04:59 GMT; path=/; domain=.google.com; HttpOnly
Server: gws
X-XSS-Protection: 0
Transfer-Encoding: chunked
私はp3pについてあまりよく知りませんが、少し掘り下げてこれを見つけました:
http://www.w3.org/TR/P3P11/#Well_Known_Location
ファイルを/w3c/p3p.xmlに配置します
p3pポリシーはrobots.txtファイルに似ているように見えます。
さらに、robots.txtメソッドが目的の方法でない場合は、すべてのページにp3pヘッダーを設定できます。ただし、これは補足です。私が想定しているコンパクトバージョンがp3p.xmlファイルである必要があるためです。
これがあなたを正しい軌道に乗せるのに役立つことを願っています。