Как политика браузера / JavaScript с одинаковым происхождением применяется к двухуровневым доменным именам? - PullRequest
0 голосов
/ 15 сентября 2010

У меня есть некоторый JavaScript, который разделяет запрос между двумя отдельными серверами в одном домене.

Требуется ли .com требование для домена в JavaScript?

В этом случае оба серверанаходятся в домене .abc.tyy, где tyy обычно называется .com

Хотите знать, если я могу использовать только домен .com?Я получаю сообщение об ошибке «Отказано в доступе», но этот код отлично работает на других отдельных серверах в этом же домене (.com).

Обновлено: Вот как именно я это использую:

123.abc.tyy имеет скрипт, который загружает свойства, к которым я хочу получить доступ.

Скрипт на 123.abc.tyy при открытии тега скрипта устанавливает для document.domain значение 'abc.tyy '.

Когда я вызываю функцию' getUser () 'в скрипте 123.abc.tyy ОТ 234.abc.tyy, я получаю сообщение об ошибке отказа в разрешении.

Способ, которым яя вызываю 'getUser ()': я обращаюсь к http://123.abc.tyy в браузере, и сайт позволяет мне указать URL-адрес для загрузки в одном из его фреймов.Я указываю этот URL на http://234.abc.tyy/BeginLoadPatient.aspx", на этой странице я делаю следующее:

window.location = 'http://234.abc.tyy/LoadPatient.aspx?PatientId=' + getUser ()';с getUser, являющимся функцией, созданной в 123.abc.tyy

Если я добавлю 234.abc.tyy и 123.abc.tyy к моим доверенным сайтам, все будет хорошо - это пропускает ту же политику происхождения?

Ответы [ 2 ]

2 голосов
/ 15 сентября 2010

Нет, SOP не имеет значения, что такое домен, только то, что он представляет одно и то же происхождение.(Может ли быть так, что у вас есть где-то домен .com?)

Обратите внимание, что есть нечто большее, чем домен, который нужно учитывать. Одинаковая политика происхождения также учитывает протокол, порт и хост .Так что aaa.abc.tyy и bbb.abc.tyy являются различными источниками.

Если вы контролируете задействованные серверы, вы можете посмотреть на Cross-Origin Resource Sharing , но, к сожалению, CORS реализован только в современных браузерах (и в тех версиях IE, где он поддерживается, он поддерживается только при явном его использовании).

Другой вариант, конечно, JSON-P, который имеет преимущество работы кросс-браузера прямо сейчас.

Еще одна вещь, на которую стоит обратить внимание: document.domain, подробности здесь и здесь .


Обновление после ваших правок:

Сценарий 123.abc.tyy при открытии тега сценария устанавливает для document.domain значение 'abc.tyy '.

Когда я вызываю функцию' getUser () 'в скрипте 123.abc.tyy ОТ 234.abc.tyy, я получаю сообщение об ошибке отказа в разрешении.

YouВам также нужно будет установить document.domain в значение "abc.tyy" в BeginLoadPatient.aspx.

Если я добавлю 234.abc.tyy и 123.abc.tyy к моим доверенным сайтам, eвсе работает нормально - это пропускает ту же политику происхождения?

Я бы совсем не удивился (хотя для меня это было бы довольно хитроумно), но из первых рук не знал об этом,Было бы легко проверить.

1 голос
/ 15 сентября 2010

Я не до конца понимаю суть вопроса, но это может быть полезно для вас.

Политика одинакового происхождения JavaScript - как она применяется к различным поддоменам?

...