La chose la plus simple serait d'utiliser par ex. RestClient et dit:
get '/proxy/:url' do |url|
RestClient.get(url)
end
Cela permettrait de remplacer le contenu de toute récupération réussie. Faites un peu plus de travail, et vous passez par les types de contenu et les en-têtes de contrôle de cache. Un peu plus, et vous pouvez passer à travers les codes d'erreur. Puis POSTs. Alors ...
Cela dit, je ne vais pas vous aider davantage parce que faire de votre proxy serveur Web un contenu arbitraire est une idée terrible. Cela mine le same origin policy qui est la base de la sécurité Web. C'est lent (attachant votre serveur web en attente d'un autre serveur web) et/ou non trivial (si vous partez avec sinatra-async
+ em-http-request
). Cela fait de votre serveur web un anonymiseur qui invite totalement les abus. Juste ... ne le fais pas.
- mandatement URL arbitraires: mauvaise.
- Proxier du contenu à partir d'URL spécifiques de confiance: peut-être OK, mais ce n'est probablement pas la meilleure solution.
Cela fonctionne, mais les scrips et les feuilles de style n'ont pas fonctionné. Avez-vous essayé ce code? –
En fait cela fonctionne parfois (comme avec yahoo.com) mais pas d'autres (comme avec habosa.com), aucune idée pourquoi c'est? Par ailleurs, il y a beaucoup plus de choses avec lesquelles ça marche que d'autres. –
L'utilisation de 'open-uri' provoque cette implémentation non seulement pour le contenu HTTP proxy, mais aussi pour les fichiers locaux:' GET/proxy? Url =/etc/passwd'. S'amuser! – willglynn