2017-08-25 5 views
1

こんにちは私はGoogle Cloud Bucketにアップロードするための署名付きURLを生成しましたが、PUTしようとするとPostmanだけで奇妙なことにSignatureDoesNotMatchを取得します。 Pythonで同じURL、queryParams、Headersを試してみると、うまくアップロードできました。 https://storage.googleapis.com/ ****-171020.appspot.com/[email protected]****-171020.iam.gserviceaccount.com:ここPostmanを使用するとGoogle Cloudの署名付きURL「SignatureDoesNotMatch」が正しく動作します。

は、私は郵便配達

URLで試行要求であります&期限= 1503755879 &署名= tlcHVRwbvMSxaIB6oO/TDXRDczXGFSE6ZXHmZbtCUMhjpos36/1KdKV7Lbmm7XtKsq42SFNksUIZLplyAMpkG8aMBuydeoJd + kvebLxK2k + AX8Xr2VVf5Aq/vVJrPGGYGD0iEN + bY264NIFbyJnlm0pthCVGtB5YqZJadCFDwPFWqi04312Jzzen1CXDY + saY0BabmXaZeCzINz7kV + aq0AJoS8taW0uqboYc1o4gCA6OPAswMr1E840a + II4HqkeOWcv7PiHEPdw/sgH3PR + TkGmjTAd9f8H6zJIFaT8DLbtsl7t3iAUM7Fvdtc9pGQt6KT0qUm9z3XfPEjP8OsTA ==

ヘッダ: のContent-MD5:7Qdih1MuhjZehB6Sv8UNjAの== のContent-Type:ここではtext/plainの

作品Pythonプログラムは次のとおりです。

import requests 

url = "https://storage.googleapis.com/****-171020.appspot.com/swift.txt" 
querystring = {'GoogleAccessId':'[email protected]****-171020.iam.gserviceaccount.com', 'Expires':'1503755879', 'Signature':'tlcHVRwbvMSxaIB6oO/TDXRDczXGFSE6ZXHmZbtCUMhjpos36/1KdKV7Lbmm7XtKsq42SFNksUIZLplyAMpkG8aMBuydeoJd+kvebLxK2k+AX8Xr2VVf5Aq/vVJrPGGYGD0iEN+bY264NIFbyJnlm0pthCVGtB5YqZJadCFDwPFWqi04312Jzzen1CXDY+saY0BabmXaZeCzINz7kV+aq0AJoS8taW0uqboYc1o4gCA6OPAswMr1E840a+II4HqkeOWcv7PiHEPdw/sgH3PR+TkGmjTAd9f8H6zJIFaT8DLbtsl7t3iAUM7Fvdtc9pGQt6KT0qUm9z3XfPEjP8OsTA=='} 
payload = "Hello World!" 
headers = {'Content-MD5': '7Qdih1MuhjZehB6Sv8UNjA==', 'Content-Type':'text/plain'} 

response = requests.request("PUT", url, data=payload, headers=headers, params=querystring) 

print(response.text) 

私はここで何が起こっているかを理解する助けてください。ありがとう!

+0

郵便配達員にあなたのヘッダーをどのように定義したかが問題だと思います。 「キー」と「値」を実際のキーと値に置き換えてみてください。例:{"key": "Content-MD5" ...}の代わりに{"Content-MD5": "7Qdih1MuhjZehB6Sv8UNjA =="} – AllenMoh

+0

@AllenMohこれはコピーを試みたときに郵便配達員がクリップボードに追加された方法です混乱。 – Aster

答えて

2

クエリ文字列のキーと値は、暗号化する必要があります。あなたが "SignatureDoesNotMatch"を取得している理由は、受信側ではあなたが提供しているものをデコードしていて、それがエンコードされていることを期待していて、あなたが提供しているものはエンコードされていないので、

予約文字については、このリンクを参照してください: https://tools.ietf.org/html/rfc2396#section-2

あなたは、クエリ文字列エンコード支援するオンラインツール: http://www.url-encode-decode.com/

あなたのpythonのコードが動作するため、要求のライブラリは自動的にURIがコードしていることがあるがクエリ文字列パラメータ。

+1

アレンのおかげで、エンコードは違い、それはそれを修正しました。 :) – Aster

関連する問題