Настройка Компактной Политики конфиденциальности с помощью Django
Вопрос
Как мне настроить политику конфиденциальности P3P compact от Django, чтобы 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 устанавливаются с другим заголовком ответа.Вы можете увидеть заголовок файла 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
Другие советы
Я не очень много знаю о p3p, но я немного покопался и нашел это:
http://www.w3.org/TR/P3P11/#Well_Known_Location
Вы разместили файл по адресу /w3c/p3p.xml
Похоже, что политики p3p аналогичны файлам robots.txt.
Кроме того, вы можете установить заголовки P3P все ваши страницы, если способ robots.txt не так, как вы хотите идти.Однако это побочное замечание, поскольку вам нужна компактная версия, которая, как я предполагаю, является файлом p3p.xml.
Надеюсь, это поможет вам встать на правильный путь.