HTML5 push / replaceState und das Basis-Tag verursacht eine Sicherheitsausnahme

8

Ich habe eine Testversion einer Site, die sich in einer Subdomain der normalen Site befindet, wie: Ссылка statt Ссылка .

Ich verwende das <base> -Tag, um alle Ressourcenanforderungen zurück in die ursprüngliche Domäne zu übersetzen:

%Vor%

Diese Taktik hat gut funktioniert, bis ich HTML5 Push / replaceState-Unterstützung implementiert habe.

Nun, wenn ich diese Anweisung in der Konsole ausfühle:

%Vor%

... dann bekomme ich ein DOMException -Objekt in WebKit-basierten Browsern:

%Vor%

... und dieser Fehler in FireFox 4:

%Vor%

Wenn ich das <base> -Tag entferne und die selbe Anweisung ausführe, wird der neue Status gepushed, und es gibt keine Ausnahme.

Ein paar Fragen: 1) ist dieses Verhalten ein Sicherheitsrisiko, oder ist es ein Fehler? Und 2) gibt es einen Workaround, um die Ausnahme zu verhindern, oder eine andere Taktik als die Verwendung des <base> -Tags, das das Problem vollständig umgehen wird?

Danke für Ihre Aufmerksamkeit.

    
JKS 14.06.2011, 23:41
quelle

1 Antwort

12

Es ist kein Fehler, Sie verstoßen gegen die Richtlinie Gleiche Herkunft . "" ist eine relative URL, die in 'http://x.com/' aufgelöst wird, seit Sie das <base> -Tag verwendet haben. Ссылка ist eine andere Domain als die, auf der die Seite gehostet wird, weshalb dies mit der gleichen Herkunftsrichtlinie zusammenhängt.

Wenn Sie eine absolute URL verwenden, die auf eine Ressource in Ссылка in Ihrem history.pushState() -Aufruf zeigt, sollte dies behoben werden:

%Vor%     
Useless Code 14.06.2011, 23:52
quelle

Tags und Links