С помощью
APPАвтор(ы): Вадим Макутин
Дата: 12.06.2004
Разбирается создание и работа собственного интернет-протокола, приводится пример приложения, использующего такой протокол.
реализовал свой протокол.
На выходе, для браузера, — это обычный HTML.
Но вот в чём проблема —
не могу работать из JS кода с объектом XMLHTTPRequest.
Вылетает на вызове метода xmlHttpReq.open('GET', url, true)
Получаю эксепшен
Message: Немає дозволу на доступ.
Number: -2147024891 (0x80070005)
Но если промежуточно сохранить эту страничку локально на диск, и работать потом с файлом, то весь JS код работает...
Мож кто подскажет
как заставить JS объекты работать сразу в своём протоколе?
PS: я копал в направлении интернет зон.
Для моего протокола — показывало из браузера что это зона Интернета, а для локального файла, естественно, — зона Мой Компьютер.
Но игра с настройками безопасности зоны интернета (разрешал на выполнение всё) ничем не помогло...
Может многоуважаемый all, подскажет как для своего APP указать/изменить зону безопасности?
Здравствуйте, 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;
}
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");