如何使用charset utf-8为来自Phoenix的静态JSON文件提供Filestack

时间:2017-02-18 12:26:50

标签: json phoenix-framework

我有一个Phoenix应用程序,在javascript端我使用Filestack客户端。 Filestack从我的服务器请求JSON文件。我把文件放在我的资产目录中并且它被加载但是Filestack Javascript客户端崩溃了,因为它无法读取json do to german umlauts(öäü)。我看了一下标题,就像这个Content-type: application/json一样。我认为我需要的是Content-type: application/json; charset=utf-8。我也使用webpack2顺便说一句。 我该如何做到这一点?

1 个答案:

答案 0 :(得分:2)

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

将此添加到config/config.exs

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

然后,强制重新编译mime

mix deps.clean --build mime

然后启动凤凰城:

mix phoenix.server

在此之后,content-type投放的.jsonPlug.Static个文件应为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