Haskell-Scotty: установка пользовательских заголовков (параметры x-frame)

Новичок в Haskell здесь!

В моем стороннем проекте haskell я использую scotty для обслуживания некоторых динамически генерируемых html-страниц. Проблема в том, что страницы не могут быть открыты внутри iframe из-за того, что для заголовка «x-frame-options» установлено значение «SAMEORIGIN».

Как я могу изменить этот заголовок на другой? Я бы хотел установить этот заголовок для всех ответов. Есть ли промежуточное ПО, которое может это сделать?

Спасибо!


person afcastano    schedule 18.01.2017    source источник


Ответы (1)


Вы можете определить собственное промежуточное программное обеспечение, которое добавляет этот заголовок к каждому ответу (все необходимые инструменты доступны в _ 1_):

{-# 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
person adamse    schedule 19.01.2017