J'ai un problème avec l'implémentation de la requête "forwarded" dans java. J'ai donc une servlet, et je veux que pour la demande localhost (servlet fonctionne sur localhost) je reçois une page (page définie interne au programme) et peux continuer à travailler avec cette page en utilisant localhost. Exemple: page defined: stackoverflow.com Donc, si je tape url du navigateur: localhost, je reçois le contenu de stackoverflow mais l'URL doit être localhost, si je vais à localhost/tags je reçois le contenu de stackoverflow/tags mais l'url devrait toujours être localhost/tags. J'espère pour votre aide les gars"Forwarded" request
Répondre
Il semble que vous ayez à implémenter une sorte de proxy HTTP tunnel dans votre servlet. Heureusement, ce n'est pas si difficile à faire et il peut même y avoir des options open source disponibles là-bas.
Ce lien peut vous être utile: http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
Cela ne peut pas être transmis car il est sur un autre domaine. Un forward ne peut avoir lieu que vers une ressource dans le contexte webapplication.
Vous devez inclure la ressource externe. Le JSTL<c:import>
peut être utile ici.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:import url="http://stackoverflow.com" />
C'est essentiellement tout.
Une alternative est l'élément HTML , la différence est qu'il comprend au côté client.
<iframe src="http://stackoverflow.com"></iframe>
Cela ne fonctionne pas parfaitement sur certains sites tels que Stackoverflow;) L'avantage est toutefois que l'URL parent reste le même tout le temps, quel que soit ce que vous faites sur le site inclus (sauf de l'ouverture liens dans un nouvel onglet/fenêtre).
hmm vous pouvez utiliser un httpclient pour obtenir le contenu complet du site, puis l'envoyer à l'agent utilisateur à l'aide HttpComponents httpclient ou le package maillot-client comme dans:
public void doGet(HttpServletRequest req,HttpServletResponse resp){
HttpClient client=new HttpClient() // dont instantiate like this it's a heavyweight ;)
GetMethod get=new GetMethod("http://stackoverflow.com/");
int status=client.executeMethod(get);
if (status=200){
resp.getWriter().write(get.getResponseBodyAsString().getBytes("UTF-8"));
resp.getWriter().flush();
}else{
// handle error
}
get.releaseConnection();
}
que faire si vous devez maintenir une session? – LoudNPossiblyWrong
vous devrez alors ajouter l'état à votre programme, ce qui enregistre la session en interne et la définit en utilisant l'API httpsomponents lors d'un appel au site tiers. comme dans get.setRequestHeader ("Cookie", "JSESSIONID = xxx"); – fasseg
Quel type de HttpClient est-ce? D'apache? –
- 1. X-Forwarded-Pour causer un index indéfini en PHP
- 2. PHP SoapClient request
- 3. KSoap Request Timeout?
- 4. Http Post Request
- 5. Extjs cache JSON request
- 6. MooTools Request Failing
- 7. Erlang bittorrent pieces request
- 8. Bad Request Piwik
- 9. Copie Http Request InputStream
- 10. Handle http post request
- 11. Corba request timeout
- 12. Http request timeout issue
- 13. C# Request Queue
- 14. ASP.NET request lifecycle confusion
- 15. Tornado Request Handler
- 16. Cross Site AJAX Request
- 17. http request ... cookies
- 18. Request() vs Request.QueryString()
- 19. Intercepter a4j: commandButton request
- 20. Proxy SQL Server Request
- 21. twitter request limit
- 22. Logique Request-Response
- 23. Usercheck.php Script Request
- 24. Ajax https request issue
- 25. python request param
- 26. iphone coredata fetch-request tri
- 27. fb: request-form sans redirection
- 28. Comment obtenir Ajax Request Progress?
- 29. Caractère spécial sur Http Request
- 30. Comment vider le tableau REQUEST?
Exactement, ce qui est plus d'un problème de réseau ("comment puis-je faire des demandes à localhost aller à www.stackoverflow.com?") qu'une question de servlet en soi –