签名 url 中存在 MalformedSecurityHeader 错误 - 标头包含在签名标头中,但未包含在请求中

2024-03-30

我正在尝试使用签名 URL 使用 React 和 Node.js 通过 Google 应用程序引擎上传文件。 我能够生成签名 URL,但在控制台中收到 CORS 错误时。当我在浏览器中打开签名 URL 时,收到以下错误。

<Error>
<Code>MalformedSecurityHeader</Code>
<Message>Your request has a malformed header.</Message>
<ParameterName>content-type</ParameterName>
<Details>Header was included in signedheaders, but not in the request.</Details>
</Error>

这是我的 Node js 代码,用于生成签名 Url

async function generateV4UploadSignedUrl() {
          const options = {
            version: "v4",
            action: "write",
            expires: Date.now() + 15 * 60 * 1000, // 15 minutes
            contentType: "audio/wav",
          };

          // Get a v4 signed URL for uploading file
          const [url] = await gcTempFiles
            .file(gcFileName)
            .getSignedUrl(options);

          console.log("Generated PUT signed URL:");
          console.log(url);
          console.log("You can use this URL with any user agent, for example:");
          console.log(
            "curl -X PUT -H 'Content-Type: application/octet-stream' " +
              `--upload-file my-file '${url}'`
          );

          res.status(200).json({
            success: true,
            msg: `url created`,
            data: { url},
          });
        }

这是我在反应应用程序中的前端代码


let file = files.map((f) => f.file);

console.log(file)

let xhr = new XMLHttpRequest();
        xhr.open('PUT', signedurl, true);
        xhr.setRequestHeader("Content-type", "application/octet-stream");
        xhr.onload = function (response) {
          console.log('on-load', response);
        };

        xhr.onreadystatechange = function () {
          if (xhr.readyState === 4) {
        
            if (xhr.status === 200) {
              console.log("Status OK")
        
            } else {
              console.log("Status not 200")
            }
          }
        };

        xhr.onerror = function (response) {
          console.log("Response error", response)
        };

        xhr.upload.onprogress = function (evt) {
          // For uploads
          if (evt.lengthComputable) {
            var percentComplete = parseInt((evt.loaded / evt.total) * 100);
            console.log("progress", percentComplete)
        
          }
        }
        xhr.send(file);

另外,我使用以下命令在存储桶级别设置了所有 CORS 策略gsutil cors set cors.json gs://bucket name

cors.json 文件

[{"origin": ["*"],
"responseHeader": ["X-Requested-With", "Access-Control-Allow-Origin", "Content-Type"],
"method": ["GET", "HEAD", "POST"],
"maxAgeSeconds": 3600}]

我再次在谷歌应用程序引擎上构建网络应用程序。并且需要对 URL 进行签名才能解决 32MB 限制。有人可以指出我做错了什么吗?因此,任何有用的建议都将受到高度赞赏。


我已使用以下代码在存储桶上配置 CORS 解决了该错误。它运行得很好。

async function configureBucketCors() {
    await storage.bucket(bucketName).setCorsConfiguration([
      {
        maxAgeSeconds: 3600,
        method: ["PUT", "GET", "HEAD", "DELETE", "POST", "OPTIONS"],
        origin: ["*"],
        responseHeader: [
          "Content-Type",
          "Access-Control-Allow-Origin",
          "x-goog-resumable",
        ],
      },
    ]);
  }
  configureBucketCors().catch(console.error);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

签名 url 中存在 MalformedSecurityHeader 错误 - 标头包含在签名标头中,但未包含在请求中 的相关文章

随机推荐

  • Django:一种更干燥的方法来防止编辑/删除对象?

    读完Django的权限文档后 我还是一头雾水 我想阻止用户编辑或删除他们不拥有的对象 我是这样写的并且有效 在views py中 def deleteReward request reward id reward get object or
  • C++ 中的浮点变量

    我正在学习C 并在一个简单的程序中遇到这些问题 所以请帮助我 这是代码 include
  • 捕获页面重定向的下载链接 (WGET)

    这是我的问题 我目前正在为我编写一个脚本 该脚本可以自动下载一些我用来 清理 计算机的软件 我已经能够使用如下下载 URL 进行下载 https www driverscloud com plugins DriversCloud Win e
  • C++ 单击红色 X 时防止控制台窗口关闭

    我正在开发一个简单的 C 控制台应用程序 没有类和对象 有没有任何方法或功能可以防止单击红色 X 按钮时控制台关闭 我正在使用 Visual Studio C Express 2010 一个简单的控制台应用程序 仅包含 main cpp 文
  • 保存 matplotlib 动画时遇到问题[重复]

    这个问题在这里已经有答案了 我正在使用 matplotlib 制作动画热图 我的数据在一个文本文件 rs h 中 有 3 列 x y z 我使用散点图制作一个简单的热图 然后使用动画包随着时间的推移更新热图 import pandas as
  • 如何使用 powershell 删除 SSL 绑定

    I use Remove WebBinding Port Port Protocol https删除 Web 绑定 这将从关联站点中删除绑定 但绑定仍然存在 我可以在下面找到一个条目IIS SslBindings但未分配给任何站点 如果我尝
  • Wcf 类公共属性与 get;set 属性

    当我创建一个 wcf 类时 我经常这样做 DataContract Public class Customer DataMember public string Name get set 有人告诉我这样做更好 DataContract Pu
  • 如何在 Java Response 对象中返回 JsonArray

    我正在尝试实现基于 java 的 web 服务服务器 它返回 Json 和基于 java 脚本的 web 服务客户端 这是我的java部分 Path myapp Consumes MediaType APPLICATION JSON Pro
  • 在微服务中使用 json Web 令牌进行会话管理

    我试图弄清楚如何在微服务架构中使用 json Web 令牌来管理会话 看看这个设计article http nordicapis com how to control user identity within microservices 我
  • C++ 流如何为输入分配空间?

    例如 is type std istream str type std string is gt gt str 这是怎么长出来的str适应输入 它逐个字符地读取并调用str push back 或类似的东西 或者它是否有一种机制可以在读取输
  • 作为 Xcode 构建过程的一部分,如何运行上传符号来上传 dSYM?

    好的 所以我正在尝试自动上传 dSYM 我正在遵循此官方文档中的说明 https firebase google com docs crashlytics get deobfuscated reports https firebase go
  • 左右声道与麦克风录音分离

    我试图从麦克风录制并将录制的数据仅发送到左通道 右通道上有零 但我的技术似乎不起作用 我正在使用 PCM 16 和单声道模式的录音和音轨 我似乎做错了什么 package com example leftrighttest import a
  • 色彩图的非线性缩放以增强对比度

    以下 python 代码创建包含正态分布值的矩阵热图 import numpy as np from matplotlib import pylab as plt np random seed 123 make sure we all ha
  • 如何迁移到WKWebView?

    我试图了解如何使用 iOS8 中新的 WKWebView 但找不到太多信息 我读了 http developer telerik com featured why ios 8s wkwebview is a big deal for hyb
  • 学习 Objective-C 的好资源 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Maven 获取特定类

    有没有一种方法可以让 maven 在将依赖项导入 uber jar shade 时仅包含特定的 class 文件 我正在寻找一种方法来将名称中包含 Client 的文件从依赖项 jar 中提取出来并添加到最终的 jar 中 任何帮助都会很棒
  • Python 中的字母数字排序和负数

    我有一个相当简单的列表 一个数字后跟一个句子 这里按正确的顺序 347 a negative number 100 another negative number 25 and again a negative number 17 some
  • ArrayCollection 删除排序

    对我的数据提供程序 数组集合 应用数字排序后 我无法通过平铺列表对项目重新排序 我是否需要从 arrayCollection txt 中删除排序 如果是这样 这只是设置 collection sort null 的情况吗 var sortF
  • 为什么用户控件加载事件没有被触发

    我有一个用户控件 我有时再次遇到这种情况 但总是可以通过使用 New 构造函数 但我仍然想知道我做错了什么 因为如果加载了控件 则必须触发 load 事件 这是一些代码
  • 签名 url 中存在 MalformedSecurityHeader 错误 - 标头包含在签名标头中,但未包含在请求中

    我正在尝试使用签名 URL 使用 React 和 Node js 通过 Google 应用程序引擎上传文件 我能够生成签名 URL 但在控制台中收到 CORS 错误时 当我在浏览器中打开签名 URL 时 收到以下错误