1

我試過多種方式來簽署雲端存儲網址。請繼續獲取:無法簽署Google雲端存儲的網址

對預檢請求的響應未通過訪問控制檢查:請求的資源上沒有「Access-Control-Allow-Origin」標頭。原因'#####'因此不被允許訪問。

的KOD應該工作,因爲我已經測試了多個庫:

from google.cloud import storage 

storage_client = storage.Client() 
bucket = storage_client.get_bucket(app_identity.get_default_gcs_bucket_name()) 
latest_blob = None 
for blob in bucket.list_blobs(): 
    bn = blob.name 
    if not latest_blob or bn > latest_blob.name: 
    latest_blob = blob 
signed_url = latest_blob.generate_signed_url(
    int(time.time()) + 3600, 
    method='GET', 
    content_type="text/csv") 
self.redirect(signed_url) 

我想可能有一些雲的控制檯設置巫術需要。

我已授予服務帳戶對存儲的完全訪問權限,IAM和存儲桶中。 我認爲重定向可能是問題,但複製粘貼也不起作用; SignatureDoesNotMatch。

回答

2

這聽起來像你有兩個問題:

  1. 這聽起來像你試圖使用從JavaScript的URL在Web瀏覽器。如果是這樣,您需要在您的對象上設置CORS策略,因爲默認設置是拒絕跨源請求。詳情請查看https://cloud.google.com/storage/docs/cross-origin

  2. 除此之外,聽起來像您的請求也失敗了,當你直接輸入網址,並且你有一個SignatureDoesNotMatch異常。我猜測問題是你指定一個GET請求的content_type。客戶在提出請求時不指定「Content-Type」標頭。嘗試刪除它。

相關問題