[OpenLayers-Users] Problems with setting up a proxy.php
Christian Röttger
chris.roettger at uni-muenster.de
Wed Sep 14 10:26:07 EDT 2011
Hi,
i have additional questions about proxy, do not understand it too.
do i have to include a proxy when i develop the code on my laptop,
connecting to my geoserver (other machine)? If yes, where do i have to
install it?
And do i have to include a proxy when i upload the html page to my
server and only connect to the geoserver on the same machine?
At the last case no proxy is needed, if i understood the wiki, or?
greets
christian
Am 14.09.2011 13:22, schrieb Gabriele Seitz:
> Hi,
>
> I have got problems, getting a proxy-server for using WFS running on my
> linux-server. Geoserver is ok and serving WMS.
> I gave up on getting to run proxy.cgi, as described in
> "http://trac.osgeo.org/openlayers/wiki/FrequentlyAskedQuestions#ProxyHost",
> but in this forum found a hint on a proxy.php
>
> This is what I did (using firefox 6.0.2):
> I copied the proxy.php to a location on the server where I can call ist by
> typing "http://sub.domain.com/proxy.php?url="
>
> Firefox shows:
> XML-Verarbeitungsfehler: Kein Element gefunden
> Adresse: http://sub.domain.com/proxy.php?url=
> Zeile Nr. 2, Spalte 1:
>
> (which is something like "XML-computing error. no element found, adress
> http... line 2, column 1")
>
> In my script, that defines the WFS, I am using 'OpenLayers.ProxyHost=
> "http://sub.domain.com/proxy.php?url=";' before defining a WFS-layer
>
> Definition of WFS like this:
>
> var pointlayer =new OpenLayers.Layer.Vector("WFS", {
> strategies: [new OpenLayers.Strategy.BBOX()],
> protocol: new OpenLayers.Protocol.WFS({
> url: "http://sub.domain.com/geoserver/MMPbasic/wfs",
> featureType: "gis_elemente",
> featureNS: "http://sub.domain.com/geoserver/MMPbasic"
> }),
> styleMap: new OpenLayers.StyleMap({
> strokeWidth: 3,
> strokeColor: "#333333"
> }),
> });
>
> Firebug shows:
> XML-Verarbeitungsfehler: Kein Element gefunden Adresse:
> moz-nullprincipal:{ff05177f-b54a-42f3-a833-4eb51f10ca69} Zeile Nr. 1, Spalte
> 1:
> which is basicly the same as above, except that it doesn't show the adress
> but some mozilla-stuff.
>
> In DOM I find the layer, but no features in it.
>
> Definition of WMS from the same source is okay and shows correctly
> var flaglayer = new OpenLayers.Layer.WMS("WMS",
> "http://sub.domain.com/geoserver/MMPbasic/wms",
> {
> layers: 'MMPbasic:gis_elemente',
> transparent:true
> }
> );
> CetCapabilities-Request
> http://sub.domain.com/geoserver/wfs?service=wfs&version=1.1.0&request=GetCapabilities
> seems okay to me. I can see the requested featuretype.
>
> Is there something wrong with my code or with the Proxy. I give you the code
> of proxy.php at the end.
>
> Thanks for helping.
>
> Gabriele
>
> the proxy.php:
>
> <?php
>
> // Taken from Community Mapbuilder svn trunk
> //
> http://svn.codehaus.org/mapbuilder/trunk/mapbuilder/server/php/proxy.php
> // on 10 September 2008
>
> /*
> License: LGPL as per: http://www.gnu.org/copyleft/lesser.html
> $Id: proxy.php,v 1.2 2008-09-10 14:21:44 tkralidi Exp $
> $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;
> }
>
> ?>
>
>
> --
> View this message in context: http://osgeo-org.1803224.n2.nabble.com/Problems-with-setting-up-a-proxy-php-tp6792124p6792124.html
> Sent from the OpenLayers Users mailing list archive at Nabble.com.
> _______________________________________________
> Users mailing list
> Users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/openlayers-users
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 6040 bytes
Desc: S/MIME Cryptographic Signature
Url : http://lists.osgeo.org/pipermail/openlayers-users/attachments/20110914/86a192cf/smime-0001.bin
More information about the Users
mailing list