我在通过文件 API 将文件上传到 Azure 时遇到问题。我正在尝试运行第一个请求,该请求在 Azure 中创建文件,但失败并提示授权标头不正确。
这是我要加密的字符串:
const stringToSign = `PUT\n\n\n${contentLength}\n\n\n\n\n\n\n\n\nx-ms-date:${currentDate}\nx-ms-type:file\nx-ms-version:2020-10-02\n/${azureStorageAccount}/${shareName}/${directoryName}/${fileName}`;
这些是我在请求中传递的标头:
const headers = {
'x-ms-date': currentDate,
'x-ms-version': '2020-10-02',
'x-ms-type': 'file',
'x-ms-content-length': contentLength,
'Content-Type': 'application/binary',
'Authorization': authorizationHeader
};
考虑字符串的问题,其中值不在 ' 之间的正确位置 ',但尝试了各种选择 - 没有运气。有没有人遇到过同样的问题,或者至少可以建议正确的字符串和标题?
我注意到的一件事是您正在
stringToSign
中传递文件的内容长度。根据文档 here
,它应该是 0
或空字符串。
请尝试这个:
const stringToSign = `PUT\n\n\n0\n\n\n\n\n\n\n\n\nx-ms-date:${currentDate}\nx-ms-type:file\nx-ms-version:2020-10-02\n/${azureStorageAccount}/${shareName}/${directoryName}/${fileName}`;
或
const stringToSign = `PUT\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:${currentDate}\nx-ms-type:file\nx-ms-version:2020-10-02\n/${azureStorageAccount}/${shareName}/${directoryName}/${fileName}`;