Django Iframe Safari Fix

Итак, основываясь на информации здесь Safari, сторонний трюк с файлами cookie iframe, больше не работает? и здесь Отсутствуют куки в iframe в сафари 5.1.5ясно, что старые трюки не сработают:

from django.http import HttpResponse
from django.conf import settings


SESSION_COOKIE_NAME = getattr(settings, 'SESSION_COOKIE_NAME')

class SafariIFrameFixMiddleware(object):
    """
    Middleware fixes sessions with Safari browser in iframes

    Safari default security policy restricts
    cookie setting in first request in iframe

    Solution is to create hidden form to preserve GET variables
    and REPOST it to current URL
    """
    def process_request(self, request):
        if request.META['HTTP_USER_AGENT'].find('Safari') != -1 \
                and request.META['HTTP_USER_AGENT'].find('Chrome') == -1 \
                and SESSION_COOKIE_NAME not in request.COOKIES \
                and 'cookie_fix' not in request.GET:
            html = """
""" for item in request.GET: html += "" % (request.GET[item], item) html += "" html += "
" html += '''''' return HttpResponse(html) else: return

Поэтому я ищу новый способ решить эту проблему.

Кажется, что для этого требуется открыть окно (с разрешения пользователя/щелчка, иначе оно будет заблокировано сафари) и начать сеанс там.

Проблема в том, что одна и та же всплывающая страница будет работать со всеми промежуточными программами, поэтому она не всегда может быть жизнеспособна внутри проекта (нужно как можно меньше навязчивых исправлений).

Кроме того, запуск сеанса django также находится внутри промежуточного программного обеспечения, я не нашел никакого простого способа запустить его вручную. Есть предложения?

11
задан Community 23 May 2017 в 10:26
поделиться