<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 41,  comments - 90,  trackbacks - 0
    openlayers是一個(gè)純javascript的web地圖客戶端框架,對(duì)開(kāi)發(fā)平臺(tái)的適應(yīng)性非常強(qiáng),可以很容易的嵌入靜態(tài)http頁(yè)面、asp頁(yè)面、.net頁(yè)面、jsp頁(yè)面、j2ee頁(yè)面。由于openlayers采用AJAX架構(gòu),當(dāng)?shù)貓D服務(wù)器與web客戶端服務(wù)器不同時(shí),WMS中的getFeatureInfo,以及所有WFS功能接口不能正常工作。原因是各種瀏覽器禁止跨域訪問(wèn)xml,解決的辦法很簡(jiǎn)單,使用代理(Proxy)。

    根據(jù)應(yīng)用系統(tǒng)架構(gòu)的不同,代理的實(shí)現(xiàn)方式有很多種,包括web服務(wù)器內(nèi)置代理(如Apache)、cgi方式代理、php代理、jsp代理、aspx代理等。
    openlayers官方提供了一個(gè)采用python編寫(xiě)的cgi代理,推薦在Apache2.2下使用。

    openlayers官方代理安裝步驟:
    1、安裝Python2.5,記住安裝路徑。
    2、將openlayers官方提供的proxy.cgi復(fù)制到apache的cgi-bin目錄下。
    修改第一行Python25的安裝路徑,注意不要去掉最前面的#號(hào)。
    修改allowedHosts中的geoserver/mapserver ip:geoserver/mapserver port部分。
    3、打開(kāi)conf目錄下的httpd.conf文件,修改cgi部分,例如:
    <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
        AllowOverride None
        Options ExecCGI
        Order allow,deny
        Allow from all
    </Directory>
    AddHandler cgi-script .cgi .py
    保存后重新啟動(dòng)Apache,在瀏覽器地址欄中填入http://apache ip/cgi-bin/proxy.cgi,測(cè)試代理是否工作正常。

    以下是proxy.cgi的內(nèi)容:
    #!C:\Python25\python.exe
    # -*- coding: utf-8 -*-

    import urllib2
    import cgi
    import sys, os

    # Designed to prevent Open Proxy type stuff.

    allowedHosts = ['geoserver/mapserver ip:geoserver/mapserver port',
                                    'www.openlayers.org',
                                    'openlayers.org']

    method = os.environ["REQUEST_METHOD"]

    if method == "POST":
        qs = os.environ["QUERY_STRING"]
        d = cgi.parse_qs(qs)
        if d.has_key("url"):
            url = d["url"][0]
        else:
            url = "http://www.openlayers.org"
    else:
        fs = cgi.FieldStorage()
        url = fs.getvalue('url', "http://www.openlayers.org")

    try:
        host = url.split("/")[2]
        if allowedHosts and not host in allowedHosts:
            print "Status: 502 Bad Gateway"
            print "Content-Type: text/plain"
            print
            print "This proxy does not allow you to access that location (%s)." % (host,)
            print
            print os.environ
     
        elif url.startswith("http://") or url.startswith("https://"):
      
            if method == "POST":
                length = int(os.environ["CONTENT_LENGTH"])
                headers = {"Content-Type": os.environ["CONTENT_TYPE"]}
                body = sys.stdin.read(length)
                r = urllib2.Request(url, body, headers)
                y = urllib2.urlopen(r)
            else:
                y = urllib2.urlopen(url)
          
            # print content type header
            i = y.info()
            if i.has_key("Content-Type"):
                print "Content-Type: %s" % (i["Content-Type"])
            else:
                print "Content-Type: text/plain"
            print
          
            print y.read()
          
            y.close()
        else:
            print "Content-Type: text/plain"
            print
            print "Illegal request."

    except Exception, E:
        print "Status: 500 Unexpected Error"
        print "Content-Type: text/plain"
        print
        print "Some unexpected error occurred. Error text was:", E

    備注:部署在同一個(gè)機(jī)器、不同服務(wù)器上(相同ip,不同端口號(hào))同樣是跨域訪問(wèn)。例如地圖服務(wù)器geoserver在tomcat,端口8080,應(yīng)用系統(tǒng)在Apache或IIS,端口80),這種情況下只有IE6能夠正常訪問(wèn),條件是將ip地址加入可信站點(diǎn)列表,IE7、IE8、FF3.6都會(huì)禁止訪問(wèn)。


    posted on 2010-08-26 10:36 天狼 閱讀(4116) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产精品亚洲а∨天堂2021| 2017亚洲男人天堂一| 四虎影视久久久免费观看| 日韩免费三级电影| 精品国产亚洲一区二区三区在线观看 | 亚洲无砖砖区免费| 免费国产作爱视频网站| 亚洲最大福利视频| 国产麻豆免费观看91| 精品免费AV一区二区三区| 亚洲国产精品日韩专区AV| 中文字幕免费人成乱码中国| 亚洲av综合av一区| 亚洲毛片免费观看| 亚洲欧美成人综合久久久| 哒哒哒免费视频观看在线www| 成年网站免费入口在线观看 | 亚洲真人无码永久在线观看| 午夜免费不卡毛片完整版| 猫咪www免费人成网站| 国产偷国产偷亚洲清高动态图| 中文字幕乱码免费看电影| 亚洲色大成网站www永久| 成年性羞羞视频免费观看无限| 国产成人综合亚洲一区| 亚洲美女又黄又爽在线观看| 亚洲成人免费电影| 亚洲av片在线观看| 亚洲精品国产精品乱码视色 | 人妻无码中文字幕免费视频蜜桃 | 边摸边脱吃奶边高潮视频免费| 亚洲色婷婷综合久久| 美女视频黄是免费的网址| 免费无码国产在线观国内自拍中文字幕| 亚洲一区AV无码少妇电影☆| 成人福利免费视频| xvideos永久免费入口| 亚洲国产精品日韩在线| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 四虎永久精品免费观看| 亚洲视频在线免费观看|