Одинаковая политика происхождения и внешние скрипты - PullRequest
0 голосов
/ 18 апреля 2011

Мне было поручено интегрировать рекламный код из AdBrite.

Это фрагмент, который мне дали, очищенный для удаления наших идентификаторов:

<script type="text/javascript">
var AdBrite_Title_Color = '3D81EE';
var AdBrite_Text_Color = '000000';
var AdBrite_Background_Color = 'FFFFFF';
var AdBrite_Border_Color = 'CCCCCC';
var AdBrite_URL_Color = '008000';
try{var AdBrite_Iframe=window.top!=window.self?2:1;var AdBrite_Referrer=document.referrer==''?document.location:document.referrer;AdBrite_Referrer=encodeURIComponent(AdBrite_Referrer);}catch(e){var AdBrite_Iframe='';var AdBrite_Referrer='';}
</script>
<script type="text/javascript">document.write(String.fromCharCode(60,83,67,82,73,80,84));document.write(' src="http://ads.adbrite.com/mb/text_group.php?sid=sanitized&zs=sanitized&ifr='+AdBrite_Iframe+'&ref='+AdBrite_Referrer+'" type="text/javascript">');document.write(String.fromCharCode(60,47,83,67,82,73,80,84,62));</script>
<div><a target="_top" href="http://www.adbrite.com/mb/commerce/purchase_form.php?opid=sanitized&afsid=1" style="font-weight:bold;font-family:Arial;font-size:13px;">Your Ad Here</a></div>

Загрузка удаленногосценарий с серверов Adbrite путем записи в DOM.String.fromCharCode ловко записывает символы ASCII для <script>, чтобы сослаться на удаленный файл Javascript.

Мой вопрос: почему это работает?Разве браузеры не распознают это как нарушение политики одного и того же происхождения?

Кстати, что побудило меня к расследованию этого факта: у меня проблема при получении URLпараметры должны быть правильно экранированы, а затем не экранированы в UWBinder GWT.

Спасибо

1 Ответ

3 голосов
/ 18 апреля 2011

Та же политика происхождения применяется к запросам AJAX.Загрузка удаленных сценариев не регулируется этим правилом, поэтому могут существовать такие решения, как JSONP .

...