У меня есть тестовая версия сайта, расположенная в поддомене обычного сайта, например:
http://test.x.com вместо http://x.com.
Я использую тег <base>
для перевода всех запросов ресурсов обратно в исходный домен:
<base href="http://x.com/" />
Эта тактика прекрасно работала, пока я не реализовал поддержку push / replaceState в HTML5.
Теперь, если я выполню этот оператор в консоли:
history.pushState({}, "", "");
... тогда я получаю DOMException
объект в браузерах на основе WebKit:
code: 18
constructor: DOMExceptionConstructor
line: 2
message: "SECURITY_ERR: DOM Exception 18"
name: "SECURITY_ERR"
sourceId: 4839191928
__proto__: DOMExceptionPrototype
... и эта ошибка в FireFox 4:
Security error" code: "1000
Если я удаляю тег <base>
и выполняю ту же инструкцию, новое состояние отправляется, и исключений нет.
Несколько вопросов: 1) это поведение представляет собой угрозу безопасности или это ошибка? И 2) есть ли обходной путь, чтобы предотвратить исключение, или тактика, отличная от использования тега <base>
, которая полностью обойдет проблему?
Спасибо за внимание.