haskell-servant/servant

Invalid HTTP headers

Open

#770 opened on 2017年6月19日

GitHub で見る
 (7 comments) (0 reactions) (0 assignees)Haskell (1,953 stars) (422 forks)batch import
help wanted

説明

I'm not sure if there's a type-safe way of enforcing valid HTTP header names, but servant currently allows header names to have spaces which can break break Chrome.

More information can be found in a wai issue at https://github.com/yesodweb/wai/issues/628.

Example

{-# LANGUAGE DataKinds         #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators     #-}

module Main where

import           Network.Wai
import           Network.Wai.Handler.Warp
import           Servant
import           Data.Text

type HelloAPI = Get '[PlainText] (Headers '[Header "A A" Text] Text)

server :: Server HelloAPI
server = return $ addHeader "foo" $ "Hello, world!"

helloApi :: Proxy HelloAPI
helloApi = Proxy

app :: Application
app = serve helloApi server

main :: IO ()
main = run 80 app

コントリビューターガイド