Haskell-Scotty:设置自定义标题(x-frame-options)

时间:2017-01-18 13:22:52

标签: haskell scotty haskell-wai

Haskell新手在这里!

在我的haskell端项目中,我使用scotty来提供一些动态生成的html页面。问题是由于" x-frame-options"无法在iframe内打开页面。标题设置为" SAMEORIGIN"。

如何将标题更改为不同的标题?我想为所有回复设置标题。是否有中间件可以做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以定义自己的中间件,将此标头添加到每个响应中(Network.Wai中提供了所有必需的工具):

{-# LANGUAGE OverloadedStrings #-}

import Network.Wai -- from the wai package
import Web.Scotty hiding (options)

addFrameHeader :: Middleware
addFrameHeader =
  modifyResponse (mapResponseHeaders (("X-Frame-Options", "whatever") :))

然后在你的scotty应用程序中使用它:

main = scotty 6000 $ do
  middleware addFrameHeader
  get "/" (text "hello")

使用curl我们可以看到它包含在响应中:

> curl --include localhost:6000
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Date: Thu, 19 Jan 2017 19:22:57 GMT
Server: Warp/3.2.8
X-Frame-Options: whatever
Content-Type: text/plain; charset=utf-8

hello