Как создать заголовки P3P в Python/Flask?

Я столкнулся с той же проблемой, что и с Safari, отклоняющим файлы cookie и продолжающим перезагружать iframe facebook:

проблема со входом в iframe приложения facebook в Safari

Решение в PHP должно быть примерно таким:

<?php
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"')
?>

Я не совсем понимаю PHP, как мне добиться этого в Python/Flask? Должен ли я как-то установить это в каждой функции в коде представления или в base.html, из которого происходят все остальные шаблоны?

Огромное спасибо,


person Houman    schedule 05.08.2013    source источник


Ответы (1)


Взгляните на flask.make_response.

«Иногда необходимо установить дополнительные заголовки в представлении. Поскольку представления не должны возвращать объекты ответа, но могут возвращать значение, которое конвертируется в объект ответа самим Flask, становится сложно добавить к нему заголовки. Эта функция может вместо использования возврата, и вы получите объект ответа, который вы можете использовать для прикрепления заголовков.

def index():
    response = make_response(render_template('index.html', foo=bar))
    # add your P3P header to the response
    response.headers['P3P] = 'xxxx'
    return response
person codegeek    schedule 05.08.2013
comment
Большое спасибо за ответ. Хотя ваше решение работает, кажется, что решение заголовка P3P больше не является решением проблемы iframe сафари. Это отвечает на мой вопрос, но мой поиск должен продолжаться. - person Houman; 06.08.2013
comment
Просто дополнительный вопрос, как этот код P3P генерируется для решения проблемы межсайтовых файлов cookie? Я заметил, что этот код не всегда одинаков. Спасибо - person Houman; 07.08.2013