当我在 header 中使用 x-amz-tagging 时,会出现 403 forbidden 错误
When I use a x-amz-tagging in header it gives 403 forbidden error
您好,我有一个可用的无服务器功能,它使用 s3 signedurl 将文件放入 s3 存储桶中,该功能在无服务器框架上使用,我正尝试使用 Next 迁移到 vercel 无服务器功能。
该函数通过无服务器函数和 Postman 工作,但是当我尝试使用 Vercel 时,虽然它生成了 signedurl ok 但是当我尝试将它与 "x-amz-tagging"="test"
header 一起使用时,我得到了 403错误。这是我的代码的相关部分:
//serverless function
const allowCors = fn => async (req, res) => {
res.setHeader('Access-Control-Allow-Credentials', true)
res.setHeader('Access-Control-Allow-Origin', '*')
res.setHeader('Access-Control-Allow-Methods', 'GET,OPTIONS,PATCH,DELETE,POST,PUT')
res.setHeader(
'Access-Control-Allow-Headers',
'X-CSRF-Token, X-Requested-With, x-amz-tagging, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'
)
return await fn(req, res)
}
function requestUploadURL(req, res) {
...
}
module.exports = allowCors(requestUploadURL)
//code in app
try {
const config = {
onUploadProgress(progressEvent) {
const percent = Math.round(
(progressEvent.loaded * 100) / progressEvent.total)
adduploadprogress({
file: fileSelectedArray[i].file,
fileType: fileSelectedArray[i].fileType,
myFsize: fileSelectedArray[i].myFsize,
percent,
})
},
headers: {
'Content-Type': fileSelectedArray[i].fileType,
'x-amz-tagging': 'test', // THIS CAUSES 403 ERROR
},
}
const resp1 = await axios.put(
uploadURL,
fileSelectedArray[i].file,
config
)
非常感谢收到的任何建议
出于某种原因,我还需要使用 Tagging:''
作为被 allowCors
函数包装的函数中 s3 参数的一部分。我以前不需要这样做
const { body } = req
const s3Params = {
Bucket: UNIQUEBUCKET,
Key: body.name,
ContentType: body.type,
ACL: 'public-read',
Tagging: '',
}
const uploadURL = s3.getSignedUrl('putObject', s3Params)
您好,我有一个可用的无服务器功能,它使用 s3 signedurl 将文件放入 s3 存储桶中,该功能在无服务器框架上使用,我正尝试使用 Next 迁移到 vercel 无服务器功能。
该函数通过无服务器函数和 Postman 工作,但是当我尝试使用 Vercel 时,虽然它生成了 signedurl ok 但是当我尝试将它与 "x-amz-tagging"="test"
header 一起使用时,我得到了 403错误。这是我的代码的相关部分:
//serverless function
const allowCors = fn => async (req, res) => {
res.setHeader('Access-Control-Allow-Credentials', true)
res.setHeader('Access-Control-Allow-Origin', '*')
res.setHeader('Access-Control-Allow-Methods', 'GET,OPTIONS,PATCH,DELETE,POST,PUT')
res.setHeader(
'Access-Control-Allow-Headers',
'X-CSRF-Token, X-Requested-With, x-amz-tagging, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'
)
return await fn(req, res)
}
function requestUploadURL(req, res) {
...
}
module.exports = allowCors(requestUploadURL)
//code in app
try {
const config = {
onUploadProgress(progressEvent) {
const percent = Math.round(
(progressEvent.loaded * 100) / progressEvent.total)
adduploadprogress({
file: fileSelectedArray[i].file,
fileType: fileSelectedArray[i].fileType,
myFsize: fileSelectedArray[i].myFsize,
percent,
})
},
headers: {
'Content-Type': fileSelectedArray[i].fileType,
'x-amz-tagging': 'test', // THIS CAUSES 403 ERROR
},
}
const resp1 = await axios.put(
uploadURL,
fileSelectedArray[i].file,
config
)
非常感谢收到的任何建议
出于某种原因,我还需要使用 Tagging:''
作为被 allowCors
函数包装的函数中 s3 参数的一部分。我以前不需要这样做
const { body } = req
const s3Params = {
Bucket: UNIQUEBUCKET,
Key: body.name,
ContentType: body.type,
ACL: 'public-read',
Tagging: '',
}
const uploadURL = s3.getSignedUrl('putObject', s3Params)