Asynchronous Pluggable Protocol & XMLHTTPRequest
От: SeregaLBN Украина  
Дата: 16.03.13 20:26
Оценка:
С помощью APP
Автор(ы): Вадим Макутин
Дата: 12.06.2004
Разбирается создание и работа собственного интернет-протокола, приводится пример приложения, использующего такой протокол.
реализовал свой протокол.
На выходе, для браузера, — это обычный HTML.
Но вот в чём проблема — не могу работать из JS кода с объектом XMLHTTPRequest.
Вылетает на вызове метода xmlHttpReq.open('GET', url, true)
Получаю эксепшен
Message: Немає дозволу на доступ.
Number: -2147024891 (0x80070005)

Но если промежуточно сохранить эту страничку локально на диск, и работать потом с файлом, то весь JS код работает...

Мож кто подскажет как заставить JS объекты работать сразу в своём протоколе?

PS: я копал в направлении интернет зон.
Для моего протокола — показывало из браузера что это зона Интернета, а для локального файла, естественно, — зона Мой Компьютер.
Но игра с настройками безопасности зоны интернета (разрешал на выполнение всё) ничем не помогло...

Может многоуважаемый all, подскажет как для своего APP указать/изменить зону безопасности?
Серёга, любит баранью ногу.
Re: Asynchronous Pluggable Protocol & XMLHTTPRequest
От: aloch Россия  
Дата: 17.03.13 19:08
Оценка:
Здравствуйте, SeregaLBN, Вы писали:

Можно попробовать это:

STDMETHODIMP CProtocol::ParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwParseFlags,
LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
{
CStringW result;
switch (ParseAction)
{
case PARSE_SECURITY_URL:
result=L"http://my.stu.burl.net";

break;
default:
return INET_E_DEFAULT_ACTION;
}
*pcchResult=(result.GetLength()+1)*sizeof(WCHAR);
if (cchResult<*pcchResult) {
return S_FALSE;
}
memcpy(pwzResult,(const WCHAR*)result,*pcchResult);
return S_OK;
}


Re[2]: Asynchronous Pluggable Protocol & XMLHTTPRequest
От: SeregaLBN Украина  
Дата: 17.03.13 21:02
Оценка:
A>Можно попробовать это:
A>STDMETHODIMP CProtocol::ParseUrl(...)
A>{...
A> case PARSE_SECURITY_URL:
A>...}

Спасибо, aloch! Ваш ответ оказался мне очень полезен.
Вместе с ответом Tandetnik'а в посте, вы натолкнули меня на верную стезю.

Но в моём случае, не только это пришлось исправлять...
Это всё не работало до тех пор, пока в JS коде не изменил получение объекта XMLHTTPRequest.
Ранее было:
 return new window.XMLHttpRequest();

А нужно
 return new ActiveXObject("Msxml2.XMLHTTP");
Серёга, любит баранью ногу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.