PHP代理仅在某些URL上运行

时间:2012-04-28 01:22:58

标签: php tomcat proxy amazon-ec2 openlayers

我正试图解决在一个域上托管Geoserver地图图层所涉及的跨域问题,以及通过another domain上的OpenLayers WMSGetFeatureInfo访问它们的html文件。当然,当html file is on the same domain(点击一个多边形时,你应该得到一个带有该特征信息的弹出窗口)时,这样可以正常工作。我在这个网站和其他网站上看过一些类似的帖子,但没有一个解决了这个问题:

当我提交包含我的php代理的URL时,例如http://greengeography.org/projects/oregonwild/curlproxy3.php?url=http://www.google.com,它可以正常工作。但是,当我尝试从我的Amazon EC2站点(运行Linux和Tomcat 6顺便说一句)的任何URL(例如http://greengeography.org/projects/oregonwild/curlproxy3.php?url=http://50.112.123.161:8080)时,我得到一个0。并且可以很好地访问该IP地址on its own

这是我的php(我也尝试了 get_file_contents 方法):

<?php

    $url = $_REQUEST["url"];

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
            'POST HTTP/1.0',
            'Content-type: text/xml;charset="UTF-8"',
            'Accept: text/xml',
            'Cache-Control: no-cache',
            'Pragma: no-cache'
        ));
    $theData = curl_exec($curl);
    curl_close($curl);

    echo $theData;

?>

我的OpenLayers / GeoExt:

OpenLayers.ProxyHost = "curlproxy3.php?url=";

var featureInfo = new OpenLayers.Control.WMSGetFeatureInfo({
         url: 'http://50.112.123.161:8080/geoserver/OR_wild_wkspc/wms',
         queryVisible: true,  
         FEATURE_COUNT: 1,
         exceptions: "application/vnd.ogc.se_xml",       
         layerUrls: ["http://50.112.123.161:8080/geoserver/gwc/service/wms"],
            eventListeners: {
                getfeatureinfo: function(e) {
                     new GeoExt.Popup({
                     title: "Feature Info",
                     width: 400,
                     autoHeight: true,
                     autoScroll: true,
                     queryVisible: true,
                     map: map,
                     lonlat: mapPanel.map.getLonLatFromPixel(e.xy),
                     html: e.text
                    }).show();
                }
            }
    });

mapPanel.map.addControl(featureInfo);
featureInfo.activate();

此外,并且道歉,因为这是一个侧面问题,我甚至无法解决,直到我让代理工作,但当我点击主网站上的功能,我收到以下内容:未捕获的TypeError:无法读取null的属性“x”。也未能想出那一个。

有什么想法?我认为这是Tomcat或我的Linux / Amazon环境中的一些设置而不是php的问题,因为我对指向其他站点的代理没有任何问题。哦,我有很少的PHP经验,所以请尽可能愚蠢。谢谢!

0 个答案:

没有答案