【问题标题】:ContentType for HttpHeaders when uploading File in FormData在 FormData 中上传文件时 HttpHeaders 的 ContentType
【发布时间】:2020-08-19 12:00:02
【问题描述】:

我有一个调用 .NET Core API 的 Angular 单页应用程序。

默认设置会创建 HttpHeaders 以将 jwt 令牌传递给 API,并将 content-type 设置为 application/json; charset=utf-8

为了扩展这个应用程序,我一直在关注“Angular Image Upload Made Easy”(https://www.youtube.com/watch?v=YkvqLNcJz3Y),但是使用我的默认标头,API 中 FormData 中的图像始终为空。

所以我将 content-type 更改为 multipart/form-data,但得到了相同的结果。

经过大量实验,我发现根本不设置内容类型。我仍然可以通过我的 jwt 对用户进行身份验证,并且图像现在可以毫无问题地上传。

那么,在请求选项中省略 content-type 是否安全,或者插入“正确”类型会更好吗?那会是什么?

(在视频中的示例中,添加了请求选项以监控上传进度,但不包含任何标头-reportProgress:true,observe:'events')

【问题讨论】:

    标签: angular .net-core http-headers content-type image-upload


    【解决方案1】:

    这应该不是问题,但您仍然需要在 .NET 核心 API 中进行文件类型验证。

    在请求中(例如 POST 或 PUT),客户端告诉服务器实际发送的是什么类型的数据。

    Source

    【讨论】:

    • 谢谢,我会继续进行可行的方法,但内容类型不是必需的并且设置看似正确的内容类型不起作用似乎很奇怪。
    • 如果您想查看收到的内容类型,可以记录收到的内容类型。您使用的那个肯定有错误。
    • 手动将内容类型设置为 multipart/form-data 不起作用但是当自动添加内容类型(未设置值)时,我在 API 中检测到以下内容:multipart/form-data ; boundary=----WebKitFormBoundaryGDW5TnJTDKHj50zI 所以为了让我的文件上传工作,我让自动魔法发生
    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 2017-09-06
    • 1970-01-01
    相关资源
    最近更新 更多