第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

預(yù)簽名的 S3 上傳 url 在到期時(shí)間之前到期

預(yù)簽名的 S3 上傳 url 在到期時(shí)間之前到期

Go
暮色呼如 2023-02-14 15:24:57
我有一個(gè) lambda 來生成預(yù)簽名的上傳 URL。這是我用來獲取 URL 的代碼:    urlExpiresAt := time.Duration(10) * time.Second    s3Session := s3.New(awsSession)    request, _ := s3Session.PutObjectRequest(&s3.PutObjectInput{        Bucket:      aws.String(awssettings.FileStorageBucketName),        Key:         aws.String(fmt.Sprintf("%s/%s", *cognitoUser.Username, filename)),        ContentType: aws.String(uploadContentType),    })    uploadUrl, err := request.Presign(urlExpiresAt)在我的前端,我檢索該 URL 并立即嘗試向它發(fā)送上傳 POST 請求:    try {      const {        data: { fileUploadUrl },      } = await graphQlClient.query({        query: gql(getFileUploadUrlQuery),        variables: {          filename,        },      });      const formdata = new FormData();      formdata.append("file", file);      const ajaxRequest = new XMLHttpRequest();      ajaxRequest.upload.addEventListener("progress", progressHandler, false);      ajaxRequest.addEventListener("load", completeHandler, false);      ajaxRequest.addEventListener("error", errorHandler, false);      ajaxRequest.addEventListener("abort", abortHandler, false);      ajaxRequest.open("POST", fileUploadUrl);      ajaxRequest.send(formdata);    } catch (err) {      console.log(err);    }出于測試目的,我將我的存儲(chǔ)桶配置為可公開訪問:{    "Version": "2012-10-17",    "Statement": [        {            "Sid": "UploadFiles",            "Effect": "Allow",            "Principal": "*",            "Action": "s3:PutObject",            "Resource": "<bucketARN>/*"        }    ]}用于測試目的的 CORS 配置如下:[    {        "AllowedHeaders": [            "*"        ],        "AllowedMethods": [            "POST"        ],        "AllowedOrigins": [            "http://localhost:8080"        ],        "ExposeHeaders": []    }]CORS 飛行前請求返回狀態(tài)200,但是POST發(fā)送文件內(nèi)容的請求被拒絕403并出現(xiàn)以下錯(cuò)誤:<Error>  <Code>AccessDenied</Code>  <Message>Request has expired</Message>  <X-Amz-Expires>5</X-Amz-Expires>  <Expires>2022-09-07T04:14:50Z</Expires>  <ServerTime>2022-09-13T06:40:18Z</ServerTime>...</Error>閱讀此錯(cuò)誤,看起來 URL 在預(yù)簽名之前已過期,這沒有意義。我在這里做錯(cuò)了什么?
查看完整描述

1 回答

?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

我發(fā)現(xiàn)我的解決方案有兩個(gè)問題:


PUT首先,使用方法生成預(yù)簽名 URL ,而不是POST


其次,AWSAppSyncClient我使用 GraphQL 客戶端默認(rèn)緩存查詢結(jié)果,所以我需要的只是禁用緩存fetchPolicy: "network-only"


    const {

        data: { fileUploadUrl },

      } = await graphQlClient.query({

        query: gql(getFileUploadUrlQuery),

        fetchPolicy: "network-only",       // <- THIS LINE

        variables: {

          filename,

        },

      });


查看完整回答
反對 回復(fù) 2023-02-14
  • 1 回答
  • 0 關(guān)注
  • 184 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)