как я могу понять, когда ie7 и ie8 говорят "чтобы помочь защитить бла-бла"?Потому что это мешает моему сервлету служить байтовым массивом в качестве файла для загрузки - PullRequest
1 голос
/ 01 июня 2011

при возврате zip-файла (байтового массива) для загрузки, т.е. 7 и ie8 запрещают загрузку, и говорит «чтобы помочь защитить ваш бла-бла». Затем, когда я нажимаю на эту панель и нажимаю «загрузить файл». После перезагрузки страницы загрузка не начинается. Потому что моя загрузка начинается только при нажатии на ссылку.

В Firefox нет проблем. Я только должен знать, как обнаружить эту ситуацию?

Позвольте рассказать вам, как работает система:

моя ссылка для загрузки:

<a href="javascript:" onclick="getSelectedCheckBoxes();downloadForm.submit()">downloadr</a>

после перехода по этой ссылке я выполняю некоторые действия в ProcessAction, затем возвращаю портлет в jsp. В jsp с кодами ниже переадресация сервлету, который служит для загрузки:

location.href="<%=request.getContextPath()%>/ZipDownloadServlet?cacheKey=blabla"

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Проблема в том, что ресурс, который вы пытаетесь загрузить, не идемпотентен (т.е. это не GET, а POST, который должен начать загрузку. Чтобы решить эту проблему для IE, я бы предложил поместить перенаправление между ПОСТ и загрузка, поэтому

  • POST готовит загрузку (возможно, проверяет параметры POST, еще много чего) и
  • затем перенаправляет, используя код ответа HTTP 303 с заголовком Location, установленным в (временный) URL, где ресурс может быть запрошен через GET
  • когда IE решает, что хочет запросить у пользователя разрешение, а затем снова ПОЛУЧИТЬ, проблем не возникает, потому что ваш ресурс идемпотентен и может быть загружен так часто, как IE пытается
1 голос
/ 01 июня 2011

Необходимо убедиться, что вы отправляете HTTP-запрос на загрузку файла только в инициированном пользователем обработчике событий, обычно это событие «щелчка» со страницы.(На самом деле может быть так, что только события клика работают; я не удосужился заняться расследованиями, так как в любом случае почти всегда происходит "щелчок").таким образом.

...