проблемой: "сross-domain data access", которая возникла когда приложение и страничка c javascriptами находются на разных серверах.
Каждый раз, когда я открываю страничку (c JS) на 1-м сервере с помощью IE, я получаю prompt "This page is accessing information that is not under its control. These poses a security risk. Do you want to continue". Если жму Yes - все работает, если No - получаю "Access denied". A FireFox, вообще, это не проглатывает (из-за secyrity reasons я думаю) .
Когда переместил JS на 1-ый сервер и положил туда же proxy asp-cкрипт, который пересылает данные со 2-го сервера на 1-ый - все работает. Но, хотелось бы иметь приложение без proxy, как Google
AdSense.
Спросил на программистских форумах - пока без ответа. Может быть кто-то делал нечто подобное и подскажет как это можно сделать без proxy - чтобы prompt в IE не появлялся и чтобы это все работало с FireFox. Как побороть сross-domain data access?
-------------------
Скрипты:
на 1-м сервере страничка с JS
Код: Выделить всё
<script type="text/javascript" language="javascript">
var tagsin ="bla...";
var count = 5;
var sorting = 0;
var width = 160;
var height = 600;
var bordercolor = "Blue";
var bgcolor = "WhiteSmoke";
var linkcolor = "Green";
var textcolor = "Navy";
</script>
src="http://adsense.companyname.com/AdSense.js"></script>
На 2-м сервере - NET-application, которое генерирует некоторый текст (HTML), и этот текст пересылается в упомянутую страничку на 1-м сервере.
Скрипты на 2-м сервере такие (файл AdSense.js):
Код: Выделить всё
var xmlHttp;
showHint();
function showHint()
{
var url="http://adsense.companyname.com/default.aspx?sid=" + Math.random() + "&tagsin=" + tagsin + "&count=" + count + "&sorting=" + sorting + "&width=" + width + "&height=" + height + "&bordercolor=" + bordercolor + "&bgcolor=" + bgcolor + "&linkcolor=" + linkcolor + "&textcolor=" + textcolor;
xmlHttp=GetXmlHttpObject(stateChanged);
xmlHttp.open("GET", url , false);
xmlHttp.send(null);
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.write( xmlHttp.responseText + "<br/>" );
}
}
function GetXmlHttpObject(handler)
{
var objXmlHttp=null
if (navigator.userAgent.indexOf("Opera")>=0)
{
return
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP"
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP"
}
objXmlHttp=new ActiveXObject(strName)
objXmlHttp.onreadystatechange=handler
return objXmlHttp
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest()
objXmlHttp.onload=handler
objXmlHttp.onerror=handler
return objXmlHttp
}
}