OpenLayers-ProxyHost
Добавлено: 24 фев 2010, 16:12
В связи с переносом своего проекта на платный хостинг, появилась проблема в работе функции GetFutureInfo (получение информации из объектов посредствам клика по ним). Проблема состоит в том, что при клике по объектам выходит ошибка "Отказано в доступе". Из документации по OpenLayersвыяснил следующее: Из соображений безопасности стандартный API XMLHTTPRequest не позволяет запрашивать информацию с других доменов. XMLHTTPRequest используется во многих классах OpenLayers [WFS, GeoRSS и т.д.]. Поэтому, чтобы запросить данные с удаленного сервера, нужно установить на вашем сервере прокси-скрипт. Пошел дальше...сделал скрипт как описано в документации, вот он (заменил свой домен на "mysite.com"):
в свой html файл вставил строку
все как описано в документации...но так и неполучил желаемого результата...изначально выдавал ошибку "Отказано в доступе" и не показывал popap, теперь выдает пустой popap и парралельно окно с новой ошибкой "Unhandled request return Internal Server Error"
Помогите пожалуйста советом...чего, куда, что не так делаю..ПЛИИИИИЗ!!!
Код: Выделить всё
#!/usr/bin/env python
"""This is a blind proxy that we use to get around browser
restrictions that prevent the Javascript from loading pages not on the
same server as the Javascript. This has several problems: it's less
efficient, 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 stuff
with it. It only loads pages via http and https, but it can load any
content type. It supports GET and POST requests."""
import urllib2
import cgi
import sys, os
# Designed to prevent Open Proxy type stuff.
allowedHosts = ['http://mysite.com/', 'mysite.com',
'www.mysite.com', 'http://www.mysite.com']
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
Код: Выделить всё
OpenLayers.ProxyHost = "http://mysite.com/cgi-bin/proxy.cgi?url=";
Помогите пожалуйста советом...чего, куда, что не так делаю..ПЛИИИИИЗ!!!