使用Django设置紧凑的隐私策略

使用Django设置紧凑的隐私策略,django,cookies,p3p,Django,Cookies,P3p,我如何从Django设置P3P compact隐私策略,以便IE在安全设置为高时从我的站点接受cookies,即除非有compact隐私策略,否则不接受cookies 干杯 盖伊我对p3p知之甚少,但我做了一点挖掘,发现了: 您将文件放在/w3c/p3p.xml 看起来p3p策略类似于robots.txt文件 此外,如果robots.txt方法不是您想要的方式,您可以在所有页面上设置p3p标题。不过,这只是一个旁注,因为您需要的是紧凑版本,我假设它是p3p.xml文件 希望这有助于您走上正确的

我如何从Django设置P3P compact隐私策略,以便IE在安全设置为高时从我的站点接受cookies,即除非有compact隐私策略,否则不接受cookies

干杯
盖伊

我对p3p知之甚少,但我做了一点挖掘,发现了:

您将文件放在/w3c/p3p.xml

看起来p3p策略类似于robots.txt文件

此外,如果robots.txt方法不是您想要的方式,您可以在所有页面上设置p3p标题。不过,这只是一个旁注,因为您需要的是紧凑版本,我假设它是p3p.xml文件


希望这有助于您走上正确的道路。

中间件是在“每个请求”的基础上执行类似操作的首选方法。例如,这里有一个简单的中间件,用于向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
为了稍微扩展一下主题,cookies和诸如P3P报头之类的报头被同时发送,作为响应的一部分;事实上,在引擎盖下,cookies设置了另一个响应头。您可以使用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压缩头添加到Django Auth系统设置的cookie中。。Cookie是否对所提供的页面有单独的标题?