2010-07-20 3 views

Répondre

0

Vous pourriez contourner la restriction de sécurité décrite par @Giorgi en utilisant un script proxy PHP.

proxy.php

<?php 
if(isset($_GET['url'])) { 
# Get the Referred URL 
    $raw = file_get_contents($_GET['url']); 
# RegExp to Strip All Script tags and/or links with Javascript in them. 
    $safe = preg_replace('/<script[^>]*>.*<\/script>|[\"\']javascript:.*[\"\']/im' , '' , $raw); 
    echo $safe; 
} else { 
    echo 'No URL Set'; 
} 

Ensuite, utilisez l'action de charge jQuery pour appeler des pages comme proxy.php? Url = http% 3A // www.google.com/

Non , l'action preg_replace() est juste un brouillon - vous voudriez faire des tests et des ajustements majeurs pour vous assurer que vous empêchez les gens de jouer avec votre site de cette façon.

+0

que voulez-vous dire en jouant avec mon site? – matt

+0

Scripting intersite - http://en.wikipedia.org/wiki/Cross-site_scripting. Où javascript, dans la page tierce que vous appelez, peut être déclenché comme s'il provenait de votre site, ce qui pourrait compromettre la sécurité. –

2

Sur la page jQuery.load:

En raison des restrictions de sécurité du navigateur, la plupart des demandes "Ajax" sont soumis à la même politique d'origine; la requête ne peut pas extraire des données d'un domaine, d'un sous-domaine ou d'un protocole différent.

Same origin policy

1

Comme le dit @Giorgi, les appels multisites sont souvent bloqués en raison des restrictions de sécurité. Toutefois, si le site distant renvoie JSONP, l'appel fonctionnera très probablement.

Pour les autres appels, vous devez appeler sur une page sur votre propre site. Et cette page pourrait bien être un proxy qui récupère l'URL demandée sur le backend à la place.

$('#content').load('/myproxy.handler?url=http://www.somedomain.com/server/whatever/file.php'); 
+0

Pour des raisons de sécurité (XSS par exemple) Je ne pense pas qu'un proxy générique soit une bonne solution. Cela pourrait être une meilleure solution: /myproxy.handler?action=GetWhateverData puis le gestionnaire de proxy connaît l'URL: –

+0

est-il possible d'utiliser jquery load avec un SUBDOMAIN de la même URL? Si la charge se déclenche sur http://www.mydomain.com, puis-je charger http://hello.mydomain.com/hello.php ??? – matt

+0

C'est possible, et cela implique de définir document.domain = "votredomaine.com". Voir http://www.tomhoppe.com/index.php/2008/03/cross-sub-domain-javascript-ajax-iframe-etc/ pour plus d'informations et des exemples. –