2010-07-21 1 views
0

alors c'est une chose étrange sur laquelle je travaille. certains d'entre vous me déjà aidé avec ce script:AJAX et proxy: chargement de site Web étranger avec une autre requête?

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'; 
} 

c'est un proxy qui me permet d'utiliser la méthode de charge jquery avec proxy.php?url=http%3A//www.somedomain.com/

qui fonctionne parfaitement. Je me demande maintenant si je peux transmettre une autre chaîne de requête dans cette URL qui http://www.somedomain.com peut $ _GET de l'URL?

Je pense que cela pourrait me faire mal de comprendre ce que je cherche. Je me demande si elle est en quelque sorte possible de le faire:
proxy.php?url=http%3A//www.somedomain.com&query=anewquerywhichsomedomaincanread

si je mets une autre? comme requête, il se termine par un 404 parce que je ne peux pas mettre deux? dans une URL.
proxy.php?url=http%3A//www.somedomain.com?query=anewquerywhichsomedomaincanread

donc je me demande s'il y a un truc à faire que si somedomain.com peut utiliser la méthode $ _GET pour obtenir la deuxième chaîne de requête de l'URL. Je ne peux pas utiliser un & car: this ->proxy.php?url=http%3A//www.somedomain.com&query=anewquerywhichsomedomaincanread ressemblerait à ceci ->http://www.somedomain.com&query=anewquerywhichsomedomaincanread pour somedomain.com.

m'avez-vous? des idées?

+0

Ceci est un risque majeur pour la sécurité et une invitation ouverte aux scripts inter-sites. Je vous recommande fortement de trouver une autre façon de faire ce que vous essayez de faire, autre que de sortir aveuglément le code HTML d'une autre page dans votre propre page. Votre expression régulière n'empêche pas et ne peut pas empêcher l'insertion de JavaScript dans votre page. –

Répondre

0

Vous devrez encoder l'adresse URL entière que vous transmettez dans la chaîne de requête. Vous pouvez utiliser encodeURIComponent() en JavaScript pour le faire.

+0

merci pour le tipp mais je ne comprends pas tout à fait. alors comment ça marche? Je vais utiliser toute la chaîne d'uri avec deux? dedans et l'encoder! et que je vais le décoder sur le côté serveur pour obtenir la valeur? $ sv.load (http://www.mydomain.com/proxy.php?url=http%3A//www.anydomain.com/some.php?=querystring); – matt

+0

Vous devez appliquer l'encodage URI à l'URL complète que vous essayez de récupérer, comme ceci: http: //www.example.com/? Uri = http% 3A% 2F% 2Fwww.remote.com% 2F% 3Ffoo% 3Dbar –

+0

et comment puis-je obtenir l'information (requête) sur mon site www.remothe.com? – matt

Questions connexes