Ниже приведена моя специфичная для Django реализация для исправления этой проблемы (т. Е. Моя загрузка не удалась в Firefox с перенаправлением 302).
В моем первоначальном представлении, которое генерирует страницу с загрузчиком, я посмотрел на куки и нашел sessionid
ipdb> self.request.COOKIES
{'csrftoken': '43535f552b7c94563ada784f4d469acf', 'sessionid': 'rii380947wteuevuus0i5nbvpc6qq7i1'}
Когда я посмотрел, что было опубликовано в SWFUploadMiddleware (при использовании Firefox), я обнаружил, что sessionid не был установлен.
В моем начальном представлении, которое генерирует страницу, содержащую обработчик загрузки, я добавил sessionid в контекст.
context['sessionid'] = self.request.session.session_key
В моих настройках swfuploader я добавил sessionid к опции post-params следующим образом:
post_params: {... "sessionid": "{{ sessionid }}" ...},
Теперь, когда я посмотрел в SWFUploadMiddleware, я увидел, что сессионный идентификатор был опубликован, , и мои загрузки начали работать, если Firefox .
ipdb> request.POST
<QueryDict: {... u'session_id': [u'rii380947wteuevuus0i5nbvpc6qq7i1'],...}>
Для полноты моего SWFUploadMiddleware выглядит так ...
from django.conf import settings
from django.core.urlresolvers import reverse
class SWFUploadMiddleware(object):
def process_request(self, request):
if (request.method == 'POST') and (request.path == reverse('upload_handler')) and request.POST.has_key(settings.SESSION_COOKIE_NAME):
request.COOKIES[settings.SESSION_COOKIE_NAME] = request.POST[settings.SESSION_COOKIE_NAME]
# http://stackoverflow.com/questions/6634666/403-forbidden-error-on-swfupload-and-django
# Fix for problem uploading images (403 error) in Firefox 20 and others
if request.POST.has_key('csrftoken'):
request.COOKIES['csrftoken'] = request.POST['csrftoken']