powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / js: Access is denied & IE7
9 сообщений из 9, страница 1 из 1
js: Access is denied & IE7
    #35456681
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть страничка, адрес которой http://www.mysite.com/mysector. У нее асинхронными запросами меняется содержимое, которое получаю по запросу http://www.mysite.com/mysector_content?param=value.
На момент создания легко отправлял файлы через input type="file" в IE6 и ФФ: выбрал файл и посредством динамического скрытого iframe отправлял на сервер. Все отлично работало. Сейчас стоит ИЕ7, попробовал - "Access is denied". Судя по описанию, проблема непреодолимая. Менял секъюрити - безрезультативно.
Попробовал отправить форму на адрес http://www.mysite.com/mysector - запрос ушел без ошибки.

Так что, http://www.mysite.com/mysector и http://www.mysite.com/mysector_content - это разнодоменные адреса? Что за фигня? Кто-то сталкивался с этой проблемой? Буду благодарен за совет.
...
Рейтинг: 0 / 0
js: Access is denied & IE7
    #35456684
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде еще свет задребезжал впереди - такая ошибка может возникать если адрес локальный. Вроде как при глобальных доменах такая ошибка может и не возникать. Так ли это?
(проверить смогу только завтра)
...
Рейтинг: 0 / 0
js: Access is denied & IE7
    #35457719
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного поспешил с вопросами. Дело обстоит немного не так ...
Приведу больше кода, потому что все оказалось, на мой взгляд, намного хуже.

На динамической странице находятся элементы, в том числе и input type="file". Форм обычно для динамики не использую, поэтому для динамического аплоада использую для этого инпута форму:
<form method="post" name="f_submit" id="f_submit" enctype="multipart/form-data" onsubmit="sendForm(this, url_of_content, uploadComplete); return true;">
<input type="file" name="file_upload" id="file_upload">
<input type="hidden" name="subAction" value="upload_file">
<input style="visibility: hidden;" id="submit_form" type="submit" value="submit">
</form>

При нажатии на кнопку отправки данных на странице все значения элементов заливаю в массив и асинхронно отправляю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
document.getElementById("but_submit").onclick = function() {
	var data = [];
	data[elem1] = value1;
	...
	data[elemN] = valueN;
	data["file_name"] = document.getElementById("file_upload").value;
	//для перехода используем не стандартную конструкцию, а отдельный запрос, так как сначала кидаем элементы,
	//которые проверяем на валидность на сервере и в случае положительного ответа сервера "нажимаем" на элемент типа субмит,
	//который запускает процесс отправки файла на сервер перед сменой контента страницы
	request.open("POST", url_of_content, true);
	request.onreadystatechange = function() {
		if (request.readyState ==  4 ) {
			_message = request.responseText;
			// тут проверка на пустую строку и на возвращаемую ошибку
			[color=green]document.getElementById("submit_form").click();[/color]
			document.getElementById("main_body").innerHTML = _message;
			run_script(document.getElementById("main_body"));
		}
	};
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.send(urlEncodeData(data));
};

Для отправки файла также использую более-менее стандартный механизм скрытого irame:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
function createIFrame() {
	var frame_id = 'frame' + Math.floor(Math.random() *  99999 );
	var div = document.createElement('div');
	div.innerHTML = '<iframe style="display:none" src="about:blank" id="' + frame_id + '" name="' + frame_id + '" onload="sendComplete(\'' + frame_id + '\')"></iframe>';
	document.body.appendChild(div);
	return document.getElementById(frame_id);
}
function sendForm(form, url, func) {
	if (!document.createElement) return;
	if (typeof(form) == "string") form = document.getElementById(form);
	var iframe = createIFrame();
	iframe.onSendComplete = function() {func(getIFrameXML(iframe));};
	form.setAttribute('target', iframe.id);
	form.setAttribute('action', url);
	alert(url);
	[color=red]form.submit();[/color]
}
function sendComplete(frame_id) {
	var iframe = document.getElementById(frame_id);
	if (iframe.onSendComplete && typeof(iframe.onSendComplete) == 'function')
		iframe.onSendComplete();
}
function getIFrameXML(iframe) {
  var doc = iframe.contentDocument;
  if (!doc && iframe.contentWindow) doc = iframe.contentWindow.document;
  if (!doc) doc = window.frames[iframe.id].document;
  if (!doc) return null;
  if (doc.location == "about:blank") return null;
  if (doc.XMLDocument) doc = doc.XMLDocument;
  return doc;
}

Что происходит на странице: нажимаем, все отлично отправляется на сервер, все поля проверяются на валидность, проверяется расширение файла, создается новая запись в соответствующей таблице БД, где также прописывается имя отправляемого файла (все файлы скидываются в одну папку и переименовываются с уникальным именем (UUID). Естественно, приходит ответ с содержимым следующей страницы и перед выводом на страницу запускаю процесс отправки файла (зеленым). И в строке отправки (красный жирный) возникает ошибка "Access is denied", и только в ИЕ7! ФФ отработал отлично и отправил файл.
Как видно из листинга, адреса для смены контента и для отправки формы с файлом абсолютно идентичны. Поэтому ума не приложу, что может не устраивать браузер.
Буду признателен за любой ответ.

P.S. Код сильно резал и упрощал, поэтому на мелкие ошибки можно не указывать, если они не относятся к делу ...
...
Рейтинг: 0 / 0
js: Access is denied & IE7
    #35458821
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, хелп!

Сутки сижу в инете, не могу найти решения ... Судя по направлению ветра, дело в формировании ифрейма и его использования. Но что и куда - не знаю.
...
Рейтинг: 0 / 0
js: Access is denied & IE7
    #35458896
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я чего-то напутал - не работает везде - ни в ИЕ6, ни в ФФ (там просто внизу пишется "остановлено")
...
Рейтинг: 0 / 0
js: Access is denied & IE7
    #35459063
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при кроссдоменных запросах выдает запрет на выполнение кода

if (!doc && iframe.contentWindow) doc = iframe.contentWindow.document;

А так все работает нормально. Тут только конкретная ссылка может помочь понять проблему увы.

Я сам не делаю upload, но у меня была такая идея реализовать так его. Может быть попробуете.

ifr = document.createElement("iframe");
ifr.src='javascript:document.write("<form><input type=file></form>")'
...

Тут получается и не только без перезагрузки страницы (как при target=iframe)
но и без блокирования основного фрейма, так как отправка производится из другого фрейма.
И генерить можно сколько угодно новых iframe.
...
Рейтинг: 0 / 0
js: Access is denied & IE7
    #35459133
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По истечении 30 часов работы решение нашел ... это полный идиотизм ...

Сверху на input type="file" была кнопка для лучшего вида страницы:
Код: plaintext
1.
2.
<div style="position: relative; left: 57px; top: -78px; z-index: 997; width: 101px; height: 27px; float: left;">
	<a class="middle" id="but_browse">Browse ...</a>
</div>
и ее обработчик:
Код: plaintext
1.
2.
document.getElementById("but_browse").onclick = function() {
	document.getElementById("file_upload").click();
};
,
где file_upload - как раз и есть элемент input type="file". Получается, что при нажатии на эту кнопку-ссылку эмулировал нажатие выбора файла. Причем, окошко нормально открывается, файл выбирается и путь указывается в строке.

Когда я убрал кнопку и обработчик, все нормально заработало! Ну не идиотизм? Как это объяснить? - 2 раза возвращал, чуточку менял и проверял - с ней не работает, без нее все ок. При чем тут "Access is denied"?
...
Рейтинг: 0 / 0
js: Access is denied & IE7
    #35461733
inpego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVsbruckПо истечении 30 часов работы решение нашел ... это полный идиотизм ...


Вот это насторожило:
Код: plaintext
document.getElementById("submit_form").click();

Помнится, с методом click() у браузеров бААААльшие проблемы. Гораздо более кошерный способ отправить форму:
Код: plaintext
document.getElementById('form_id_here').submit();
...
Рейтинг: 0 / 0
js: Access is denied & IE7
    #35462282
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чесслово, пробовал по-разному - один результат. Это точно не причина.
Дело именно в в втом, что я вызывал программное нажатие элемента input file. Видимо, с этим у винды проблема - программное открытие вызова выбора файла блокирует доступ к выбираемому файлу. Другого объяснения я пока не нахожу ...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / js: Access is denied & IE7
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]