IE 的 AWS 签名问题

2023-12-26

我目前正在将文件直接上传到 S3。用户应该能够将一个或多个文件拖到站点的定义部分。然后向我的服务器发出请求并为上传的文件生成签名

首先,我请求从服务器计算的有效签名。生成的签名如下所示:

 [
  {
  "success_action_status":"<status>successful</status>",
  "formAction":"http://[mybucket].s3.amazonaws.com",
  "Policy":"ew0KICJleHBpcmF0aW9uIjoiMjAxMy0xMi0xMVQwODoxMjo1Ni4wMDBaIiwN\nCiAiY29uZGl0aW9ucyI6DQogWw0KICB7DQogICAiYnVja2V0IjoiaHJ3b3Jr\ncy1kb2N1bWVudHMtZGV2ZWxvcG1lbnQtc2ltIg0KICB9LA0KICB7DQogICAi\nYWNsIjoiYnVja2V0LW93bmVyLWZ1bGwtY29udHJvbCINCiAgfSwNCiAgWyAi\nc3RhcnRzLXdpdGgiLCIka2V5IiwiIl0sDQogIFsgInN0YXJ0cy13aXRoIiwi\nJENvbnRlbnQtVHlwZSIsIiJdLA0KICB7DQogICAic3VjY2Vzc19hY3Rpb25f\nc3RhdHVzIjoiPHN0YXR1cz5zdWNjZXNzZnVsPC9zdGF0dXM+Ig0KICB9DQog\nXQ0KfQ0K",
  "signature":"z8vyDsAYzfFTW6bzrwMUrh/34Uc=",
  "doumentId":"6X7TP57L8S8",
  "acl":"bucket-owner-full-control",
  "Content-Type":"application/pdf",
  "AWSAccessKeyId":"AKIAIK67BLP7RUKG354A",
  "key":"14250053/6X7TP57L8S8.pdf"
  }
 ]

之后我开始使用 xmlhtttprequest 将文件上传到 s3。 在这里,我最近遇到了 success_action_redirect 不适用于此类请求的问题,因此您必须使用 success_action_status。 上传后收到 success_action_status 消息后,我必须通知我的服务器,当前上传的文件的上传已成功完成最后一个请求。

我遇到的问题是:这在 Chrome、Opera 和 Firefox 中运行得很好。但在 IE 10 上却失败了。 我还可以将文件拖到文档部分进行上传,并调用对我的服务器的请求(并附加到文件对象)。然后,在控制台中,我看到带有 200 响应的 CORS 预检请求。所以这也有效。 此后,在开始上传文件时,Internet Explorer 10 卡住并收到来自亚马逊 aws 的 403

 <?xml version="1.0" encoding="UTF-8"?>
 <Error>
  <Code>SignatureDoesNotMatch</Code>
  <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
  <StringToSignBytes>65 77 30 4b 49 43 4a 6c 65 48 42 70 63 6d 46 30 61 57 39 75 49 6a 6f 69 4d 6a 41 78 4d 79 30 78 4d 69 30 78 4d 56 51 77 4f 44 6f 78 4d 6a 6f 31 4e 69 34 77 4d 44 42 61 49 69 77 4e 0a 43 69 41 69 59 32 39 75 5a 47 6c 30 61 57 39 75 63 79 49 36 44 51 6f 67 57 77 30 4b 49 43 42 37 44 51 6f 67 49 43 41 69 59 6e 56 6a 61 32 56 30 49 6a 6f 69 61 48 4a 33 62 33 4a 72 0a 63 79 31 6b 62 32 4e 31 62 57 56 75 64 48 4d 74 5a 47 56 32 5a 57 78 76 63 47 31 6c 62 6e 51 74 63 32 6c 74 49 67 30 4b 49 43 42 39 4c 41 30 4b 49 43 42 37 44 51 6f 67 49 43 41 69 0a 59 57 4e 73 49 6a 6f 69 59 6e 56 6a 61 32 56 30 4c 57 39 33 62 6d 56 79 4c 57 5a 31 62 47 77 74 59 32 39 75 64 48 4a 76 62 43 49 4e 43 69 41 67 66 53 77 4e 43 69 41 67 57 79 41 69 0a 63 33 52 68 63 6e 52 7a 4c 58 64 70 64 47 67 69 4c 43 49 6b 61 32 56 35 49 69 77 69 49 6c 30 73 44 51 6f 67 49 46 73 67 49 6e 4e 30 59 58 4a 30 63 79 31 33 61 58 52 6f 49 69 77 69 0a 4a 45 4e 76 62 6e 52 6c 62 6e 51 74 56 48 6c 77 5a 53 49 73 49 69 4a 64 4c 41 30 4b 49 43 42 37 44 51 6f 67 49 43 41 69 63 33 56 6a 59 32 56 7a 63 31 39 68 59 33 52 70 62 32 35 66 0a 63 33 52 68 64 48 56 7a 49 6a 6f 69 50 48 4e 30 59 58 52 31 63 7a 35 7a 64 57 4e 6a 5a 58 4e 7a 5a 6e 56 73 50 43 39 7a 64 47 46 30 64 58 4d 2b 49 67 30 4b 49 43 42 39 44 51 6f 67 0a 58 51 30 4b 66 51 30 4b</StringToSignBytes>
  <RequestId>92D4E69C75687EB6</RequestId>
  <HostId>27jK6m/fqwKxHIj77uVNP+WNjnIGGIP+tIGrRYwHD1MwDmf3kz5saN7a7KL5e1fA</HostId>
  <SignatureProvided>z8vyDsAYzfFTW6bzrwMUrh/34Uc=</SignatureProvided>
  <StringToSign>ew0KICJleHBpcmF0aW9uIjoiMjAxMy0xMi0xMVQwODoxMjo1Ni4wMDBaIiwN
   CiAiY29uZGl0aW9ucyI6DQogWw0KICB7DQogICAiYnVja2V0IjoiaHJ3b3Jr
   cy1kb2N1bWVudHMtZGV2ZWxvcG1lbnQtc2ltIg0KICB9LA0KICB7DQogICAi
   YWNsIjoiYnVja2V0LW93bmVyLWZ1bGwtY29udHJvbCINCiAgfSwNCiAgWyAi
   c3RhcnRzLXdpdGgiLCIka2V5IiwiIl0sDQogIFsgInN0YXJ0cy13aXRoIiwi
   JENvbnRlbnQtVHlwZSIsIiJdLA0KICB7DQogICAic3VjY2Vzc19hY3Rpb25f
   c3RhdHVzIjoiPHN0YXR1cz5zdWNjZXNzZnVsPC9zdGF0dXM+Ig0KICB9DQog
   XQ0KfQ0K</StringToSign>
  <AWSAccessKeyId>AKIAIK67BLP7RUKG354A</AWSAccessKeyId>
 </Error>

我想知道为什么这在 Firefox 和 Chrome 中完美运行,但在 Internet Explorer 中失败。由于在我的服务器上创建签名并且在两种情况下(Chrome/IE)都是“相同”响应,因此签名应该匹配。

有人知道为什么 IE 失败而 chrome/firefox 工作正常吗?如果需要,我还可以发布我的请求和亚马逊的回复。


在不使用 FormData 的情况下重构整个 ajax 调用之后(使用如何通过ajax(无jquery)发送multipart/form-data表单内容? https://stackoverflow.com/questions/5933949/how-to-send-multipart-form-data-form-content-by-ajax-no-jquery)错误也存在,使用 fiddler2 请求没有差异。但是,最后我使用提琴手和十六进制输出发现了这个错误。

Firefox 和 Chrome 将 json 响应中的“\n”替换为“\r\n”,而 Internet Explorer 则不然。 默认情况下,将“\n”替换为“\r\n”是可行的,并且解决方案是wsa。现在效果很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IE 的 AWS 签名问题 的相关文章

随机推荐

  • RxSwift:BehaviorRelay 代替变量使用

    我是 RxSwift 的新手 正在阅读有关主题的内容 我尝试过Variable主题 这又在控制台中发出警告 DEPRECATED Variable is planned for future deprecation Please consi
  • 有没有更简洁的方法来注册 Qt 自定义事件?

    我需要为 Qt 应用程序创建几个自定义事件类 现在 看起来我需要为每个事件类实现以下事件类型注册代码 class MyEvent public QEvent public MyEvent QEvent registeredType stat
  • AUTH_LOGIN 获取完成后如何调用 AUTH_CHECK?

    我正在调用 HTTP API 以使用返回承诺的 axios 登录 AUTH LOGIN 在 API 调用完成之前 AUTH CHECK 被调用并失败 是否可以仅在 http 调用完成后触发 AUTH CHECK 请在下面找到我的 authp
  • Android:如何使用相同的相机意图拍摄多张照片

    我制作了一个 Android 应用程序 可以一张一张地拍摄照片 存储它们 向用户提供预览等等 所有这些任务都是通过类型意图来完成的ACTION IMAGE CAPTURE 所以 每次用户想要拍照时 他应该点击启动意图的 拍照按钮 等待几秒钟
  • 如何将特定状态按组与R中的ggplot2中的一个标签合并在一起?

    我想绘制美国的电网地图 所以我需要将特定的州合并在一起 我想为这些状态绘制边界 但它不起作用 每组也只有一个标签 这是我的数据 https iastate box com s 12xru62lvmbbkrohsn7b4wwexq11umn7
  • CSS :第一个子选择器 IE7

    我遇到了 IE7 的小问题 我有以下 CSS 代码 但它在 IE7 中不起作用 但是 如果不组合 row class span 和 first child 都可以工作 有没有办法做类似的事情或者让它以某种方式工作 row class spa
  • 我可以在 INSERT 语句中使用别名吗?

    我们可以在 insert into 语法中使用别名吗 以下均无效 INSERT INTO tableblabla AS bla INSERT INTO bla tableblabla INSERT INTO tableblabla bla
  • 使用 Java API 创建简单的 1 行 Spark DataFrame

    在 Scala 中 我可以从内存中的字符串创建单行 DataFrame 如下所示 val stringAsList List buzz val df sqlContext sparkContext parallelize jsonValue
  • Dnx 4.5.1/Dnx Core 5.0 不明确的参考

    在我和其他人的许多项目中 如果我使用属于不同 asp net5 项目的对象 则会弹出不明确的引用错误 有趣的是 它仍然可以编译和工作 但没有智能感知 并且我的代码被红线覆盖 一个例子是我有一个指向我的 MVC 项目的测试项目 当我尝试创建
  • 自定义元素适用于 Safari,但不适用于 Firefox 和 Chrome

    我确信我遗漏了规范中的一些基本内容 但在运行于 Safari 的 Mac 上构建了大量自定义元素后 我发现它们不适用于 Firefox 和 Chrome 我缺少什么
  • GlobalScope、CoroutineScope、lifecycleScope

    我习惯于与AsyncTask由于它的简单性 并且很好地理解它 但Coroutines让我感到困惑 您能简单地向我解释一下以下各项的区别和用途吗 GlobalScope launch Dispatchers IO GlobalScope la
  • VBA多次插入图像,无需复制、粘贴

    这里有一个有点奇怪的问题 在我的一张 Excel 工作表上 我生成了一个 pdf 文档 该代码通过根据需要添加表段并根据需要手动设置分页符来运行 以便表不会分散在单个页面上 大多数表有 5 10 行 在每页的底部 还留有足够的行来插入图像
  • 访问 C 中的命令行参数

    如果这是一个菜鸟问题 请原谅我 但我是 C 的初学者 只学习了一段时间 我尝试编写一个对两个数字求和的程序 作为应用程序的参数提供 代码是这样的 include
  • C 结构点运算符到底做什么(低级视角)?

    我有一个关于 C 中结构的问题 因此 当您创建结构时 您实际上是在定义内存块的框架 因此 当您创建结构体的实例时 您正在创建一个内存块 以便它能够保存一定数量的元素 但是 我对点运算符的作用有些困惑 如果我有一个struct Car并有一个
  • 我的代码循环次数超出了我的预期,我怀疑我的 getchar 语句有问题

    首先 我要提前感谢在座的各位 我非常期待在计算机科学领域取得进步 并随着我变得更加熟练而帮助他人 现在这是我的代码 include
  • Rstudio运行和源码的区别

    我正在使用 Rstudio 不确定选项 运行 和 源 有何不同 我尝试用谷歌搜索这些术语 但 来源 是一个非常常见的词 无法获得良好的搜索结果 Run and source具有细微不同的含义 据 RStudio 报道文档 https sup
  • ExtJS 组合框过滤器

    我有两个组合框 第一个用于选择region 第二个用于选择province 应显示在省份组合框中的值将基于区域组合框中选择的值 区域组合框代码 xtype combobox label Region ID margin 10 20 flex
  • 如何解决“都使用 XML 类型名称 X,使用 XML 属性为类型指定唯一的 XML 名称和/或命名空间”?

    我有以下枚举定义 namespace ItemTable public enum DisplayMode Tiles Default namespace EffectiveItemPermissionTable public enum Di
  • 如何在 matplotlib 中制作空白子图?

    我正在 matplotlib 中制作一组子图 例如 3 x 2 但我的数据集少于 6 个 如何将剩余的子图留空 安排如下 0 0 0 1 1 0 1 1 2 0 2 1 这可能会持续几页 但在最后一页上 例如有 5 个数据集 2 1 框将为
  • IE 的 AWS 签名问题

    我目前正在将文件直接上传到 S3 用户应该能够将一个或多个文件拖到站点的定义部分 然后向我的服务器发出请求并为上传的文件生成签名 首先 我请求从服务器计算的有效签名 生成的签名如下所示 success action status