SCRIPT5: доступ запрещен в IE9 при загрузке файла - PullRequest
7 голосов
/ 26 мая 2011

При публикации формы с полем для загрузки файла, используя document.forms[0].submit() на ie 9, мы получаем сообщение об ошибке: SCRIPT5: Access is denied

Если я нажму еще несколько раз, все будет нормально.

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

Есть ли какое-нибудь объяснение этому? Код работал годами во всех других популярных браузерах.

Код также отлично работает в IE9, если браузер настроен на режим совместимости с IE9, но это не то, над чем мы имеем общий контроль.

Я видел ссылки на XMLHTTP, являющиеся проблемой, и мы выполняем вызов XMLHTTP, но это происходит до того, как нажимается кнопка отправки.

1 Ответ

11 голосов
/ 20 августа 2011

Оказывается, проблема безопасности связана с тем, что мы запускаем код отправки файла во всплывающем окне.Всплывающее окно было открыто с помощью window.open, в котором в качестве запрошенной страницы была пустая строка.Затем мы разместили форму в этом окне.

Проблема в том, что во всплывающем окне URL-адрес по умолчанию равен about: blank, если не указан.Очевидно, что: blank считается небезопасным, поэтому при попытке POST-файла обратно в исходный домен возникает ошибка SCRIPT5: Доступ запрещен.

Решение состоит в том, чтобы использовать небольшую заглушку html-страницы дляоткройте, а затем выполните сообщение.Как только файл выбран, сообщение FILE не видит ошибку, и файл исправляет ее по желанию.

...