【问题标题】:How to serve a static JSON file from Phoenix with charset utf-8 for Filestack如何使用用于 Filestack 的字符集 utf-8 从 Phoenix 提供静态 JSON 文件
【发布时间】:2017-02-18 22:37:39
【问题描述】:

我有一个 Phoenix 应用程序,在 javascript 端我使用 Filestack 客户端。 Filestack 从我的服务器请求一个 JSON 文件。我已将文件放在我的资产目录中并已加载,但 Filestack Javascript 客户端因错误而崩溃,因为它无法读取对德语变音符号 (öäü) 所做的 json。我查看了标题,它就像Content-type: application/json 一样提供服务。我想我需要的是Content-type: application/json; charset=utf-8。我也使用 webpack2 顺便说一句。 我该如何做到这一点?

【问题讨论】:

    标签: json phoenix-framework


    【解决方案1】:

    Plug.Static 使用mime 包来设置content-type 标头。您可以覆盖json 的值,如mime package's README 中所述。确保您的应用使用的是 mime 版本 1.1.0 或更高版本,因为由于在 1.1.0 中修复了 bug,内置 mime 类型不可覆盖。

    将此添加到config/config.exs:

    config :mime, :types, %{"application/json; charset=utf-8" => ["json"]}
    

    然后,强制重新编译mime:

    mix deps.clean --build mime
    

    然后启动 Phoenix:

    mix phoenix.server
    

    在此之后,.json 服务于Plug.Static 的文件的content-type 应该是application/json; charset=utf-8

    $ curl -I localhost:4000/js/foo.json
    HTTP/1.1 200 OK
    server: Cowboy
    date: Sat, 18 Feb 2017 14:36:51 GMT
    content-length: 3
    cache-control: public
    etag: 8EA91E
    content-type: application/json; charset=utf-8
    

    【讨论】:

    • 您先生,是救生员!非常感谢!
    猜你喜欢
    • 2012-12-15
    • 1970-01-01
    • 2011-12-15
    • 2018-02-14
    • 2014-10-03
    • 1970-01-01
    • 2023-03-13
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多