haskell-servant/servant

Invalid HTTP headers

Open

#770 opened on Jun 19, 2017

View on GitHub
 (7 comments) (0 reactions) (0 assignees)Haskell (422 forks)batch import
help wanted

Repository metrics

Stars
 (1,953 stars)
PR merge metrics
 (Avg merge 5h 49m) (2 merged PRs in 30d)

Description

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

Contributor guide