簡體   English   中英

帶有Base64字符串的Json Request URL

[英]Json Request URL with Base64 string

我有一個reader.readAsDataURL(file)編碼為base64字符串的圖像。 我還使用了var imageBlob = ImageDataUrl.substring(ImageDataUrl.indexOf(",") + 1); 剝離data:image/png;base64 ,part。

現在我必須使用var link = "http://localhost:9002/AppAPI/rest/app/uploadImage?image="+imageBlob;通過json請求發送base64字符串var link = "http://localhost:9002/AppAPI/rest/app/uploadImage?image="+imageBlob;

但postman沒有收到任何響應,我的猜測是base64字符串中的某些字符會影響Http請求URL。

請問有什么方法可以解決這個問題嗎?

GET絕對不是上傳圖片時使用的正確方法。 GET 必須是冪等的和安全的 (即可重復和只讀,沒有副作用)。 事實上,RFC 7231 4.2.1明確警告不要使用基於查詢字符串參數的副作用執行操作的安全方法:

例如,基於Web的內容編輯軟件通常在查詢參數中使用動作,例如“page?do = delete”。 如果此類資源的目的是執行不安全的操作,那么資源所有者必須在使用安全請求方法訪問該操作時禁用或禁止該操作。

對於圖像上傳,您可能希望執行PUT,其中圖像內容位於請求正文中,而不是查詢字符串(因此無需對其進行base64編碼)。 將圖像內容放在查詢字符串中不太可能正常工作。 大多數服務器對URI長度施加限制,除了最小的base64編碼圖像之外,幾乎肯定會超過這個限制。 根據RFC 7230 3.1.1 ,當URI太長時,服務器必須向客戶端發送414響應,但如果有不合規的服務器忽略該要求,我不會感到驚訝。

您可能需要轉義base64編碼字符串末尾的=符號,但我建議完全刪除base64編碼的查詢字符串參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM