2017-08-25 39 views
1

您好我已經生成了一個簽名的url上傳到谷歌雲存儲桶,但是當我嘗試PUT時,我只能用PostMan獲得SignatureDoesNotMatch。當我嘗試使用Python中的相同Url,queryParams,Headers時,我能夠正常上傳。使用PostMan的Google Cloud簽名url「SignatureDoesNotMatch」,但使用Python工作正常

這裏是我的郵差試圖請求

網址:https://storage.googleapis.com/ ****-171020.appspot.com/[email protected]****-171020.iam.gserviceaccount.com &過期= 1503755879 &簽名= tlcHVRwbvMSxaIB6oO/TDXRDczXGFSE6ZXHmZbtCUMhjpos36/1KdKV7Lbmm7XtKsq42SFNksUIZLplyAMpkG8aMBuydeoJd + kvebLxK2k + AX8Xr2VVf5Aq/vVJrPGGYGD0iEN + bY264NIFbyJnlm0pthCVGtB5YqZJadCFDwPFWqi04312Jzzen1CXDY + saY0BabmXaZeCzINz7kV + aq0AJoS8taW0uqboYc1o4gCA6OPAswMr1E840a + II4HqkeOWcv7PiHEPdw/sgH3PR + TkGmjTAd9f8H6zJIFaT8DLbtsl7t3iAUM7Fvdtc9pGQt6KT0qUm9z3XfPEjP8OsTA ==

接頭: 內容-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

我相信你的問題是你如何在郵遞員中定義你的郵件頭。嘗試用實際的鍵和值替換「鍵」和「值」。例如:{「Content-MD5」:「7Qdih1MuhjZehB6Sv8UNjA ==」}而不是{「key」:「Content-MD5」...} – AllenMoh

+0

@AllenMoh這就是郵遞員添加到剪貼板的方式,當我嘗試複製,編輯以避免混亂。 – Aster

回答

2

查詢字符串中的鍵和值需要進行uri編碼。你得到一個「SignatureDoesNotMatch」的原因是,在接收端他們正在解碼你提供的內容,期望它是uri編碼的,並且由於你提供的內容沒有被編碼,所以解碼產生不同的簽名。

請參閱此鏈接保留字符: https://tools.ietf.org/html/rfc2396#section-2

在線工具,幫助您編碼您的查詢字符串: http://www.url-encode-decode.com/

你的Python代碼工作的原因,就是請求庫自動URI編碼查詢字符串參數。

+1

感謝艾倫,是的編碼是不同的,它修復了它。 :) – Aster

相關問題