lundi 20 mai 2013

Java Google APP Engine Proxy pour résoudre les problèmes de cross domain

Vous êtes peut être en train de développer une application java, peut être sous google appengine, vous voulez manipuler des images ou des ressources qui sont sur d'autres serveurs mais malheureusement vous avez un problème de cross domain. La solution c'est de faire un proxy.

Voici le code d'un proxy qui marche niquel sous sous App Angine. Vous avez le test ici : http://paint.mcbjam.com/proxy?fwdurl=http://fr.wikipedia.org/wiki/Maison-Blanche





import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



public class ProxyServlet extends HttpServlet {



@Override
protected void doGet(HttpServletRequest req, HttpServletResponse rsp)
throws ServletException, IOException {
try {

String fwdurlstring=req.getParameter("fwdurl");
if(fwdurlstring==null)
{
fwdurlstring="http://images.aviary.com/imagesv5/feather_default.jpg";
}


URL fwdURL = new URL(fwdurlstring);
HttpURLConnection fwdConnection =
(HttpURLConnection) fwdURL.openConnection();

for (String key : fwdConnection.getHeaderFields().keySet()) {
   rsp.setHeader(key, fwdConnection.getHeaderField(key));
}

copy(fwdConnection.getInputStream(), rsp.getOutputStream());

} catch (Exception e) {
e.printStackTrace(rsp.getWriter());

}
}


private void copy(InputStream in, OutputStream out) throws IOException {
int len = 0;
byte[] buf = new byte[1024];

while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}

in.close();
}

}

Aucun commentaire:

Enregistrer un commentaire

Merci pour votre commentaire