2009-12-01 10 views
1

Avoir une Javascript que je dois travailler par ce qui suit:Javascript sécurité/cross script sur le même serveur

: // localhost

: // servername

: /www.domainnamefortheserver.com

Lorsque j'exécute le script à partir de http://servername avec un IFRAME référençant le domaine - il ne se charge pas.

Existe-t-il un moyen d'obtenir le modèle de sécurité Javascript pour reconnaître le nom du serveur, localhost et le domaine comme le même "domaine"?

Merci

+0

Utilisez-vous des URL absolues? – Wookai

Répondre

2

Si vous utilisez sous UNIX, vous pouvez modifier/etc/hosts pour donner une fausse entrée DNS pour votre serveur.

par ex.

127.0.0.1 localhost www.domainnamefortheserver.com

Ensuite, vous pouvez toujours vous connecter à ce que le nom correct, même quand il est pas encore sur le site en direct. N'essayez pas de casser la sécurité javascript directement.

Cela fonctionnera également sur OSX. Windows fonctionne différemment, je suppose.

+1

Dans Windows c'est la même chose, vous pouvez ajouter une entrée à votre fichier hosts situé à - \ Windows \ system32 \ drivers \ etc \ – brendan

+0

Merci.Je suppose que je viendrai chercher ce commentaire dans 18 mois, quand je découvre soudainement que j'en ai besoin sur Windows! –

+0

En outre, les commentaires ci-dessous sur l'utilisation de chemins relatifs sont bons, sauf si vous êtes limité par un logiciel tiers qui place des domaines complets partout. –

2

Si vous utilisez un langage côté serveur pour générer la page, vous pourrez peut-être définir le domaine de la sécurité comme ceci:

document.domain = $CURRENT_HOSTNAME; 

Ainsi, le domaine de la sécurité sera le domaine demandé par l'utilisateur. C'est un coup dans le noir, mais j'espère que ça aide quand même.

0

Que voulez-vous dire par

mes références sont au nom de domaine

?

Si vous chargez des scripts dans votre page sur http://servername (en utilisant <script src=''>), ils auront accès à tout sur http://servername, même si elles proviennent d'un autre domaine. Cependant, si vous essayez de passer des appels AJAX à l'autre domaine, vous avez un problème. Vous pouvez utiliser le truc expliqué par Christopher, c'est-à-dire faire des alias au domaine.

1

Utiliser la racine URIs relatives:

href="/foo/bar" 

plutôt que URIs absolus:

href="http://example.com/foo/bar" 

De cette façon, le document sera chargé à partir du même nom d'hôte.