如何设置从Django的一个P3P精简隐私权政策,使IE接受来自我的网站cookie时的安全设置是高 - 即不接受,除非有一个紧凑隐私政策的Cookie

干杯 盖

有帮助吗?

解决方案

中间件是做这样的事情的“每个请求”的基础上的首选方式。例如,这里是中间件的一个简单的位到相同的(实施例)P3P头添加到每个响应Django的生成:

在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 --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
scroll top