Hola Alejandro, El proxyHost de OL sirve como "puente" para evitar los problemas de cross domain del navegador. Puedes usar el cgi de python que tiene el OL o montarte un proxy con php, java, etc.
Este es el proxy.php de mapbuilder. http://docs.codehaus.org/display/MAP/Downloads <?php /* License: LGPL as per: http://www.gnu.org/copyleft/lesser.html $Id: proxy.php 3650 2007-11-28 00:26:06Z rdewit $ $Name$ */ //////////////////////////////////////////////////////////////////////////////// // Description: // Script to redirect the request http://host/proxy.php?url=http://someUrl // to http://someUrl . // // This script can be used to circumvent javascript's security requirements // which prevent a URL from an external web site being called. // // Author: Nedjo Rogers //////////////////////////////////////////////////////////////////////////////// // read in the variables if(array_key_exists('HTTP_SERVERURL', $_SERVER)){ $onlineresource=$_SERVER['HTTP_SERVERURL']; }else{ $onlineresource=$_REQUEST['url']; } $parsed = parse_url($onlineresource); $host = @$parsed["host"]; $path = @$parsed["path"] . "?" . @$parsed["query"]; if(empty($host)) { $host = "localhost"; } $port = @$parsed['port']; if(empty($port)){ $port="80"; } $contenttype = @$_REQUEST['contenttype']; if(empty($contenttype)) { $contenttype = "text/xml"; } $data = @$GLOBALS["HTTP_RAW_POST_DATA"]; // define content type header("Content-type: " . $contenttype); if(empty($data)) { $result = send_request(); } else { // post XML $posting = new HTTP_Client($host, $port, $data); $posting->set_path($path); $result = $posting->send_request(); } // strip leading text from result and output result $len=strlen($result); $pos = strpos($result, "<"); if($pos > 1) { $result = substr($result, $pos, $len); } //$result = str_replace("xlink:","",$result); echo $result; // define class with functions to open socket and post XML // from http://www.phpbuilder.com/annotate/message.php3?id=1013274 by Richard Hundt class HTTP_Client { var $host; var $path; var $port; var $data; var $socket; var $errno; var $errstr; var $timeout; var $buf; var $result; var $agent_name = "MyAgent"; //Constructor, timeout 30s function HTTP_Client($host, $port, $data, $timeout = 30) { $this->host = $host; $this->port = $port; $this->data = $data; $this->timeout = $timeout; } //Opens a connection function connect() { $this->socket = fsockopen($this->host, $this->port, $this->errno, $this->errstr, $this->timeout ); if(!$this->socket) return false; else return true; } //Set the path function set_path($path) { $this->path = $path; } //Send request and clean up function send_request() { if(!$this->connect()) { return false; } else { $this->result = $this->request($this->data); return $this->result; } } function request($data) { $this->buf = ""; fwrite($this->socket, "POST $this->path HTTP/1.0\r\n". "Host:$this->host\r\n". "User-Agent: $this->agent_name\r\n". "Content-Type: application/xml\r\n". "Content-Length: ".strlen($data). "\r\n". "\r\n".$data. "\r\n" ); while(!feof($this->socket)) $this->buf .= fgets($this->socket, 2048); $this->close(); return $this->buf; } function close() { fclose($this->socket); } } function send_request() { global $onlineresource; $ch = curl_init(); $timeout = 5; // set to zero for no timeout // fix to allow HTTPS connections with incorrect certificates curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt ($ch, CURLOPT_URL,$onlineresource); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt ($ch, CURLOPT_ENCODING , "gzip, deflate"); $file_contents = curl_exec($ch); curl_close($ch); $lines = array(); $lines = explode("\n", $file_contents); if(!($response = $lines)) { echo "Unable to retrieve file '$service_request'"; } $response = implode("",$response); return $response; } ?> Este es uno en jsp https://github.com/chrismayer/JSP-Whitelist-Proxy <%@page session="false"%> <%@page import="java.net.*,java.io.*" %> <%@page trimDirectiveWhitespaces="true"%> <% /** * This is a white list proxy that could be used the prevent an error due to * JavaScript Same Origin Policy. * * CAUTION: It might break some sites and it's a security risk because * people can use this proxy to browse the web and possibly do bad and/or illegal stuff * with it. * It can load any content type. * This proxy implementation was inspired by the proxy.cgi script of OpenLayers * {@link http://openlayers.org} * To use this in OpenLayers you have to set OpenLayers.ProxyHost = "Url/To/This/Proxyfile/proxy.jsp?"; * within your JavaScript code <br> * The base code of the proxy has been provided by SNIPPLR * {@link http://snipplr.com/view/17987/jsp-proxy-for-javascript-applications/} * * @author terrestris GmbH & Co. KG * @author Christian Mayer * @author Marc Jansen * * @license BSD see license.txt * */ String[] allowedHosts = { "www.openlayers.org", "openlayers.org", "labs.metacarta.com", "world.freemap.in", "prototype.openmnnd.org", "geo.openplans.org", "sigma.openplans.org", "demo.opengeo.org", "www.openstreetmap.org", "sample.azavea.com", "v-swe.uni-muenster.de:8080", "vmap0.tiles.osgeo.org" }; HttpURLConnection con = null; try { String reqUrl = request.getQueryString(); String decodedUrl = ""; if (reqUrl != null) { reqUrl = URLDecoder.decode(reqUrl, "UTF-8"); } else { response.setStatus(400); out.println("ERROR 400: No target specified for proxy."); } // extract the host String host = ""; host = reqUrl.split("\\/")[2]; boolean allowed = false; // check if host (with port) is in white list for (String surl : allowedHosts) { if (host.equalsIgnoreCase(surl)) { allowed = true; break; } } // do the proxy action (load requested ressource and transport it to client) // if host is in white list if(allowed) { // replace the white spaces with plus in URL reqUrl = reqUrl.replaceAll(" ", "+"); // call the requested ressource URL url = new URL(reqUrl); con = (HttpURLConnection)url.openConnection(); con.setDoOutput(true); con.setRequestMethod(request.getMethod()); String reqContenType = request.getContentType(); if(reqContenType != null) { con.setRequestProperty("Content-Type", reqContenType); } else { con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); } int clength = request.getContentLength(); if(clength > 0) { con.setDoInput(true); byte[] idata = new byte[clength]; request.getInputStream().read(idata, 0, clength); con.getOutputStream().write(idata, 0, clength); } // respond to client response.setContentType(con.getContentType()); BufferedReader rd = new BufferedReader(new InputStreamReader(con.getInputStream())); String line; int i = 0; while ((line = rd.readLine()) != null) { out.println(line); } rd.close(); } else { // deny access via HTTP status code 502 response.setStatus(502); out.println("ERROR 502: This proxy does not allow you to access that location."); } } catch(Exception e) { // resond an internal server error with the stacktrace // on exception response.setStatus(500); byte[] idata = new byte[5000]; if(con.getErrorStream() != null) { con.getErrorStream().read(idata, 0, 5000); } out.println("ERROR 500: An internal server error occured. " + e.getMessage() + " " + new String(idata)); } %> Saludos, Bolo El 19 de abril de 2012 00:52, J.Alejandro Martinez Linares < [email protected]> escribió: > Hola gente alguien pudiera explicarme o mandarme alguna documentación > sobre OpenLayer.ProxyHost, es que no es que es y no tengo internet pero > ademas sin eso no puedo sacar info a traves de mis capas WMS , no me salen > ni siquiera los mismos cortos que cojo de geoserver que como son de > openlayer pero no me funcionan hay algo que no me deja verlo de forma > corrrecto y si no defino un OpenLayer.ProxyHost me da el siguiente error > > You probably need to set OpenLayers.ProxyHost to access ${url}.See > http://trac.osgeo.org/**openlayers/wiki/**FrequentlyAskedQuestions#** > ProxyHost<http://trac.osgeo.org/openlayers/wiki/FrequentlyAskedQuestions#ProxyHost> > > -- > > Este mensaje le ha llegado mediante el servicio de correo electronico que > ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema > Nacional de Salud. La persona que envia este correo asume el compromiso de > usar el servicio a tales fines y cumplir con las regulaciones establecidas > > Infomed: http://www.sld.cu/ > ______________________________**_________________ > Spanish mailing list > http://lists.osgeo.org/**mailman/listinfo/spanish<http://lists.osgeo.org/mailman/listinfo/spanish> > http://es.osgeo.org > http://twitter.com/osgeoes > -- Saludos, Bolo www.geoinquiets.cat
_______________________________________________ Spanish mailing list http://lists.osgeo.org/mailman/listinfo/spanish http://es.osgeo.org http://twitter.com/osgeoes
