2012-01-07 8 views
1

開発環境(Googleアプリケーションエンジンのローカルサーバー)でurlfetch.fetch(...)を使用してPOSTリクエストを行うと、期待どおりにHTTP 302のステータスが取得される私はリダイレクトを行うことができます)。しかし、アプリケーションをアップロードして.appspot.comから実行しようとすると、403で応答を取得します。これは「禁止されています」です。gae urlfetch local対アップロード済み

詳細:

  • URLがhttpsは(私の銀行のサイト)
  • は、リクエストヘッダでクッキーがあるある
  • ...他に何?

リモートサイト(銀行)は、2つのリクエストが異なっているように見えます。ローカルはOK、「gooleから」はOKではありません。

私のpythonコード:

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

問題:Link_HTMLParserは(あなたがURL1の最初の応答内容を見れば、それは明らかになって)フレームのソースリンクを取得するためのシンプルなパーサーです

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) 

2番目の回答:googleからの403、ローカルgae serwerからの200です。 質問の冒頭でPOSTについて述べましたが、問題(GETまたはPOST)に関係なく発生しているようです。

答えて

0

当然のことながら、銀行がいくつかの場所からのリクエスト(IPアドレスによる)を許可していない可能性があります。そして、明らかに、制限があるかどうか、銀行に尋ねることができます。リクエストメソッドがHEADではなかったとサーバが要求が満たされていない理由を公開することを希望する、それが中に拒否の理由を説明する必要がある場合

RFC 2616約403応答を言うこと

注意エンティティ。

おそらく、銀行の対応にもっと詳細があります。

また、銀行のURLではなく独自のサービスを設定し、すべてのHTTPヘッダーを記録することができます。あなたの銀行のPOSTと同じように、このURLへのPOSTは、あなたのローカルマシンと "google"からのリクエストに、要求アドレス以外のいくつかの違いがあります。

+0

ありがとうございます。私はクッキーなどを送っていないように、403のexplenationは "セッションが閉じられました"。別のサービスに対するあなたの提案はすばらしく、私はキラーテストであると思っていました。しかし、結果は私に解決策を教えてくれませんでした:1. Googleから1つのgae-specialヘッダーがあります(私はそれが重要であるとは思わない)。 2. GoogleのリクエストIPがインターレスリングしています:0.1.0.40。残りの部分はすべて同じです(セッションクッキーは性質上異なります)。私はここにコードの短い部分を投稿しようとするので、あなたまたは誰かがそれをチェックすることができます。 – sanchesor

+0

それは変です。 IPアドレスが本当に0.1.0.40であることは確かですか?無効です。さらに、私は 'URLFetchService.fetch()'を使って単純なテストを行い、209.85.224.95からの着信接続を得ました。これは、範囲の1つで、http://stackoverflow.com/questions/5591384/ipで与えられています。 -address-block-of-appengine-servers –

+0

それは私にも奇妙です。私はhttp://2live-html.appspot.com/reqで確認します。リクエストの詳細を表示します。 – sanchesor

関連する問題