相关疑难解决方法(0)

AWS API Gateway base64Decode产生乱码二进制文件?

我正在尝试从AWS API Gateway方法返回1px gif.

由于现在支持二进制数据,我使用以下"集成响应"映射返回image/gif:

$util.base64Decode("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")
Run Code Online (Sandbox Code Playgroud)

但是,当我在Chrome中查看此内容时,我会看到返回以下二进制文件:

在此输入图像描述

代替:

在此输入图像描述

任何人都可以帮助我理解为什么这是乱码和错误的长度?或者我能做些什么来返回正确的二进制文件?还有其他一些我总是可以返回这个1px gif而不使用base64Decode函数?

非常感谢,这给我带来了很大的痛苦!

编辑

这个变得陌生.看起来问题不在于base64Decode,而在于二进制的一般处理.我在这篇博客文章Stack Overflow问题之后添加了一个Lambda后端(之前我正在使用Firehose).我按照本文档页面将图像设置为binaryMediaType .

这让我可以通过Gateway API从Lambda传递以下图像/ bmp像素,它可以正常工作:

exports.handler = function(event, context) {

  var imageHex = "\x42\x4d\x3c\x00\x00\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x06\x00\x00\x00\x27\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00";
  context.done(null, { "body":imageHex });

};
Run Code Online (Sandbox Code Playgroud)

但是,以下代表图像/ png或图像/ gif的图像在通过时会出现乱码:

exports.handler = function(event, context) {

//var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\xff\xff\xff\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x01\x44\x00\x3b";
//var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b";
  var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b\x0a"
  context.done(null, { "body":imageHex });

};
Run Code Online (Sandbox Code Playgroud)

这似乎与另一个Stack Overflow问题是同一个问题,但我希望这可以通过Gateway API二进制支持来解决.不幸的是,image/bmp对我的用例不起作用,因为它不能透明......

如果它可以帮助任何人,这是一个很好的工具,用于在base64和hex之间进行转换.

amazon-web-services aws-api-gateway

15
推荐指数
2
解决办法
1万
查看次数

如何在AWS API Gateway中传递Content-Type?

我已设置 AWS API Gateway 将请求传递到返回图像的服务。

AWS UI 中显示的终端节点

当我在 UI 中使用“测试”功能时,日志显示方法响应中返回的 PNG 数据以及 `Content-Type=image/png:

“测试”UI 的 AWS 日志显示内容类型正确

但是,当您实际在浏览器中访问端点时,会Content-Type出现application/json. 我希望“测试”UI 的日志中显示的“方法响应标头”与实际返回的内容相匹配。

如何强制 API Gateway 将上游的 Content-Type(image/png在本例中,但在其他情况下更常见)返回给浏览器?

以下是 Swagger 2.0 语法中定义的端点:

"/format/{id}/image.png": {
  "get": {
    "tags": [],
    "summary": "",
    "deprecated": true,
    "operationId": "get-png",
    "produces": [
      "image/png"
    ],
    "parameters": [
      {
        "name": "id",
        "in": "path",
        "description": "My Description",
        "required": true,
        "type": "string"
      }
    ],
    "responses": {
      "200": {
        "description": "Successful operation",
        "schema": {
          "type": "file"
        },
        "headers": {
          "Access-Control-Allow-Origin": {
            "type": "string",
            "description": …
Run Code Online (Sandbox Code Playgroud)

content-type aws-api-gateway

6
推荐指数
1
解决办法
1万
查看次数

AWS API网关更改内容类型

我希望有人能提供帮助,我已经让AWS Lambda在context.succeed或context.fail中返回了一些XML,除了一小部分外,一切都很好.我回应了XML,但因为标题仍然存在Content-Type: application/json而我正在谈论的Twilio服务器正在查看并拒绝它,即使正文实际上是有效的XML.

有没有办法覆盖标题?

非常感谢.

amazon-web-services twilio aws-lambda aws-api-gateway

1
推荐指数
1
解决办法
2372
查看次数