Python GAE self.request.environ和服务器主机

Python GAE self.request.environ和服务器主机,python,google-app-engine,wsgi,Python,Google App Engine,Wsgi,我正在尝试获取运行appengine应用程序的服务器的基本URL(主机名) 类似于 wsgiref.util.application_uri(self.request.environ) 然而,它返回的路径_信息,我不想要。也许我遗漏了一些东西,但即使是这篇文章也指出应该忽略路径信息。 http://9.latest.my-app.appspot.com 基本上是按照我想找回的东西。相反,它又回来了 http://9.latest.my-app.appspot.com/my/requested

我正在尝试获取运行appengine应用程序的服务器的基本URL(主机名)

类似于

wsgiref.util.application_uri(self.request.environ)
然而,它返回的路径_信息,我不想要。也许我遗漏了一些东西,但即使是这篇文章也指出应该忽略路径信息。

http://9.latest.my-app.appspot.com

基本上是按照我想找回的东西。相反,它又回来了


http://9.latest.my-app.appspot.com/my/requested/path

您可以在
os.environ['HTTP\u HOST']
中找到主机名

这将不包括协议,但它应该很容易从您获得的值进行解析:

base = '/'.join(url.split('/')[:3])
或者


您可以在
os.environ['HTTP\u HOST']
中找到主机名

这将不包括协议,但它应该很容易从您获得的值进行解析:

base = '/'.join(url.split('/')[:3])
或者


请求对象是一个请求对象。因此,您可以从
self.request.host
获取主机名,从
self.request.host\u url
获取协议主机名,等等。

请求对象是请求对象。因此,您可以从
self.request.host
获取主机名,从
self.request.host\u url
获取协议主机名,等等。

谢谢。我希望有一个内置于wsgiref的解决方案,而不是解析请求的URL。这就足够了,但是这对于wsgi以外的情况非常有用。例如,使用和以下相对URL。但是,我建议您使用url.netloc而不是url.hostname。Netloc包含端口号,与http和https的默认值分别为80和443时不同。如果浏览,您会发现“返回值实际上是tuple子类的一个实例”。这使您可以对6个关键属性进行索引访问。(这些包括netloc,但不包括主机名,作为我上述主张的进一步证据。)这允许您使用此oneliner
base='://'.join(urlparse(url)[0:2])
获取您的基础,如果您
从urlparse导入urlparse
。如果您使用的是这样的url:
response.request.url
谢谢。我希望有一个内置于wsgiref的解决方案,而不是解析请求的URL。这就足够了,但是这对于wsgi以外的情况非常有用。例如,使用和以下相对URL。但是,我建议您使用url.netloc而不是url.hostname。Netloc包含端口号,与http和https的默认值分别为80和443时不同。如果浏览,您会发现“返回值实际上是tuple子类的一个实例”。这使您可以对6个关键属性进行索引访问。(这些包括netloc,但不包括主机名,作为我上述主张的进一步证据。)这允许您使用此oneliner
base='://'.join(urlparse(url)[0:2])
获取您的基础,如果您
从urlparse导入urlparse
。如果您使用的是这样获取url:
response.request.url