Установка Compact Privacy Policy с Django

Как установить Python Compact Privacy Policy из Django, чтобы IE принимал файлы cookie с моего сайта, когда настройки безопасности находятся на HIGH - то есть, cookie не принимается, если нет Компактной политики конфиденциальности.

Приветствия Гай

Ответы

Ответ 1

Middleware - это предпочтительный способ делать подобные действия на основе "каждого запроса". Например, вот простой бит промежуточного программного обеспечения, чтобы добавить тот же (пример) заголовок 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 устанавливаются с другим заголовком ответа. Вы можете увидеть заголовок файла cookie с помощью curl:

$ 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

Ответ 2

Я не очень-то сильно знаю о p3p, но немного поработал и нашел это:

http://www.w3.org/TR/P3P11/#Well_Known_Location

Вы помещаете файл в /w 3c/p3p.xml

Похоже, что политики p3p похожи на файлы robots.txt.

Кроме того, вы можете установить заголовки p3p на всех своих страницах, если метод robots.txt не подходит для вас. Однако это примечание, поскольку вы хотите, чтобы компактная версия, которую я предполагаю, представляет собой файл p3p.xml.

Надеюсь, это поможет вам на правильном пути.