[Featureserver] D in CRUD not working
Yves Moisan
yves.moisan at boreal-is.com
Tue Dec 23 09:08:04 EST 2008
> ... pdb? I thought you were using Javascript?
Yes. pdb if ro the Python part ... FeatureServer. Since everyting else
is working, I thought I'd stick a few set_traces() in pats of the FS
code, but indeed the CRUD stuff wroks from Curl on the commandline so
the Python part probably behaves correctly.
>
> I have no idea what proxy you're using, but the proxy is the problem.
> Is the code to the proxy public?
A proxy I found on some public site, maybe even your's (or MetaCarta's).
Here it is :
#!C:\Python24\python -u
"""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 = ['www.openlayers.org', 'openlayers.org',
'demo.mapfish.org',
'xxx.xxx.x.156:8586',
'xxx.xxx.x.124:8084',
'xxx.xxx.x.124:8088',
'xxx.xxx.x.124:8080',
'fgmapp2.fmi.com:8081','www.openlayers.org',
'openlayers.org',
'labs.metacarta.com', 'world.freemap.in',
'prototype.openmnnd.org', 'geo.openplans.org',
'sigma.openplans.org'
'www.openstreetmap.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."
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
Indeed, there is no case for a DELETE request. You'll find it before
me, but I'll give it a try.
Thanx for pointing the right spot to look at. I should have thought
about it. So indeed I'll need pdb maybe ;-)
Yves
More information about the Featureserver
mailing list