【问题标题】:File is downloaded instead of being displayed in the browser文件被下载而不是显示在浏览器中
【发布时间】:2016-02-22 07:51:55
【问题描述】:

我使用 lein new luminus my-app +postgres +auth +cljs +swagger 从 luminus 应用程序模板创建了一个全新的应用程序。在生成的文件src/clj/my_app/routes/home.clj 中创建了以下组合路由:

(GET "/docs" [] (response/ok (-> "docs/docs.md" io/resource slurp)))

当我尝试访问localhost:3000/docs 时,文件只是被下载而不是显示在浏览器中。 Chrome 和 Safari 都会发生这种情况。

这似乎与 ring.util.http-response/ok 有关,因为我也可以使用这条路线重现该行为:

(GET "/hi" [] (response/ok "hi")).

然后下载文件“hi”,文件内容为“hi”。

关于造成这种情况的任何想法?

【问题讨论】:

    标签: clojure ring luminus


    【解决方案1】:

    您的响应处理程序没有为您的响应正文设置Content-Type

    您可以使用ring.util.http-response/content-type

    (GET "/hi" [] (-> "hi"
                      (response/ok)
                      (response/content-type "text/plain")))
    

    您还可以将处理程序包装在 ring.middleware.content-type/wrap-content-type 中,以便根据 URI 中的文件扩展名“猜测”标题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多