火狐使用阿里雲OOS上傳圖片報錯:“XML 解析錯誤:找不到根元素”

元謀人111發表於2019-02-16

問題描述:

使用阿里雲OOS上傳圖片在火狐瀏覽器報錯 “XML 解析錯誤:找不到根元素”,但不影響功能的使用。阿里雲返回資訊:

<Error>
  <Code>AccessDenied</Code>
  <Message>The bucket you visit is not belong to you.</Message>
  <RequestId>5BDA7065399DF5A4B55</RequestId>
  <HostId>test-oss1.oss-cn-shenzhen.aliyuncs.com</HostId>
</Error>

問題解決:

阿里雲在 PostObject 文件裡有個引數“success_action_status”,“未指定success_action_redirect表單域時,該表單域指定了上傳成功後返回給客戶端的狀態碼。 接受值為200, 201, 204(預設)。如果該域的值為200或者204,OSS返回一個空文件和相應的狀態碼。 如果該域的值設定為201,OSS會返回一個XML檔案和201狀態碼。 如果其值未設定或者設定成一個非法值,OSS返回一個空文件和204狀態碼。”所以,之前返回不正常的這個問題,只要強行指定返回201狀態碼,就可以正常收到返回的XML了即需要有返回值,並且也沒有報錯的問題了。


可以將上傳圖片的行為看成是一次PUT請求。PUT請求的響應一般不會是200(200一般GET用,比如網頁),而是201或204;而204本來就是No Content,也就是“沒響應體”,那麼不需要返回結果(不關心是否上傳成功)的就用204,需要的就用201就行了。

【參考文章】:

前端圖片直傳OSS試驗

相關文章