asp.net-core - 启用二进制媒体类型会中断 AWS Lambda 中的选项 POST 调用 (CORS)

标签 asp.net-core aws-lambda microservices

AWS 新手..

我们有一个作为 lambda 函数在无服务器 aws 实例上运行的 .NET Core 微服务。

我们的 Controller 看起来像这样

[Route("api/[controller]")]
    [ApiController]
    public class SomeController : ControllerBase
    {


        [HttpGet()]
        [Route("getsomedoc")]
        public async Task<IActionResult> GetSomeDoc()
        {
            byte[] content;

            //UI needs this to process the document
            var contentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
            contentDisposition.FileName = "File Name";

            Response.Headers[HeaderNames.ContentDisposition] = contentDisposition.ToString();

            return File(content, "application/octet-stream");
        }


        [HttpPost()]
        [Route("somepost")]
        public async Task<IActionResult> SomePost()
        {
            return null;

        }
    }

网址

{{URL}}/getsomedoc
{{URL}}/somepost

为了让 getsomedoc 正常工作,我们在 AWS 包设置中启用了“二进制媒体类型”/,否则它会返回字节数组而不是文件。

但是当 UI 使用 方法:OPTIONS & Access-Control-Request-Method as POST

当我们删除二进制媒体类型时,“somepost”开始工作。

寻找关于为什么会发生这种情况的建议?以及我们可以从网关添加/删除什么来解决这个问题。

最佳答案

好吧,我们最终以一种奇怪的方式解决了这个问题。

为 lambda 添加了两个网关 - 其中一个启用了二进制 - 在另一个上禁用。

为了 getsomedoc - 使用启用二进制媒体类型的 postsomedoc - 使用另一个

希望有更好的方法!!

关于asp.net-core - 启用二进制媒体类型会中断 AWS Lambda 中的选项 POST 调用 (CORS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59568148/

相关文章:

java - Fabrica8、Vert.x、Karaf、Felix、Equinox、Spring DM 和 Fuse 以及 Docker 之间的区别

Neo4j 查询在特定时间运行

asp.net-core - 如何将 IdentityManager 与 AspNetCoreIdentity 结合使用

asp.net-core - Asp.net core强制用户确认电子邮件

amazon-web-services - 重新部署 lambda 后,AWS Lex 访问被拒绝。错误的默认 IAM 角色

asp.net-web-api - 在 Azure Service Fabric (API) 中将消息从一个微服务发送到另一个微服务

asp.net - HttpResponseMessage 不返回 ByteArrayContent - ASP.NET Core

amazon-web-services - fmt.Println 输出未显示在 CloudWatch 日志中

node.js - axios 获取请求错误 : Request failed with status code 504

web-services - 微服务服务注册表注册和发现