Приложение типа Google AdSense (как на Каморке)

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
eprst
Маньяк
Сообщения: 4722
Зарегистрирован: 01 июл 2004, 17:53
Откуда: Пи Тер -> Ню Вест

Приложение типа Google AdSense (как на Каморке)

Сообщение eprst »

Написал небольшое ASP.NET приложение типа Google AdSense (как на Каморке). Столкнулся с

проблемой: "с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>
<script type="text/javascript" language="javascript"
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
}
}
Аватара пользователя
eprst
Маньяк
Сообщения: 4722
Зарегистрирован: 01 июл 2004, 17:53
Откуда: Пи Тер -> Ню Вест

Re: Приложение типа Google AdSense (как на Каморке)

Сообщение eprst »

Вопрос снимается. Получилось.

Бес попутал с новыми технологиями (AJAX...) :die:
Ответить