【问题标题】:gae urlfetch local vs uploadedgae urlfetch 本地与上传
【发布时间】:2012-02-04 23:34:42
【问题描述】:

问题是,当我在开发环境(谷歌应用引擎的本地服务器)中使用 urlfetch.fetch(...) 发出 POST 请求时,我得到了 HTTP 302 状态,正如我所料(我可以进行重定向)。但是当我上传应用程序并尝试从 .appspot.com 运行它时,然后使用 403 获取响应,即“禁止”。

详情:

  • 网址是 https(我的银行网站)
  • 请求标头中有 cookie
  • .. 还有什么?

看起来,远程站点(银行)看到 2 个请求不同:本地正常,“来自 goole”不正常。

我的python代码:

    url1 = "https://www.ebgz.pl/detal-web/jbank/unlogged/choose/method.do?rid="+str(random.random())+"&srvc="       
    response = urlfetch.fetch(url1)

    lparser = Link_HTMLParser()
    lparser.feed(response.content)
    url2 = "https://www.ebgz.pl" + lparser.frameSrc

    hdrs = {}       
    hdrs['Referer'] = url1

    cookie = response.headers.get('Set-Cookie')
    if cookie:
        hdrs['Cookie'] = cookie

    response = urlfetch.fetch(url2, headers = hdrs)

Link_HTMLParser 是用于获取框架源链接的简单解析器(如果您查看 url1 的第一个响应内容就会清楚):

    class Link_HTMLParser(HTMLParser):
        def handle_starttag(self, tag, attrs):
            if tag == "iframe":
                for n,v in attrs:
                    if n == 'src':
                        self.frameSrc = v

问题在于第二个响应:它的 403 来自 google,200 来自本地 gae serwer。 我在问题的开头提到了一个 POST,但似乎无论使用哪种方法(GET 或 POST)都会出现问题。我猜这是一些会话管理问题..

【问题讨论】:

    标签: google-app-engine http-status-code-403 urlfetch


    【解决方案1】:

    当然,理论上银行可能不允许来自某些位置的请求(通过 IP 地址)。显然你可以问银行,是否有任何限制。

    请注意,RFC 2616 表示大约 403 响应:

    如果请求方法不是 HEAD 并且服务器希望公开请求未完成的原因,它应该在实体中描述拒绝的原因。

    所以银行的回复中可能还有更多细节。

    您还可以设置自己的服务,使用它代替您银行的 URL 并记录所有 HTTP 标头。 POST 到这个 URL 就像你 POST 到银行并进行比较一样,来自本地机器的请求和“来自 google”的请求除了请求地址之外是否还有其他区别。

    【讨论】:

    • 非常感谢。 403 的解释是“会话关闭”,就像我没有发送 cookie 或类似的东西。您对另一项服务的建议很棒,我认为这将是一个杀手级测试。但结果并没有让我找到解决方案: 1. google 有一个 gae-special 标头(我不认为这很重要); 2. google的请求IP很有趣:0.1.0.40。其余的都是一样的(会话cookie本质上是不同的)。我将尝试在此处发布一小段代码,以便您或任何感兴趣的人可以查看。
    • 这很奇怪。你确定IP地址真的是0.1.0.40吗?这是无效的。此外,我刚刚使用URLFetchService.fetch() 进行了一个简单的测试,并从 209.85.224.95 获得了传入连接,即来自stackoverflow.com/questions/5591384/… 中给出的范围之一
    • 这对我来说也很奇怪。我用 2.live-html.appspot.com/req 检查它 - 它会打印请求详细信息。
    猜你喜欢
    • 2013-01-24
    • 1970-01-01
    • 2012-10-30
    • 2012-01-12
    • 2013-11-15
    • 2011-05-06
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    相关资源
    最近更新 更多