haskell-servant/servant

Invalid HTTP headers

Open

#770 aberto em 19 de jun. de 2017

Ver no GitHub
 (7 comments) (0 reactions) (0 assignees)Haskell (422 forks)batch import
help wanted

Métricas do repositório

Stars
 (1.953 stars)
Métricas de merge de PR
 (Mesclagem média 5h 49m) (2 fundiu PRs em 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

Guia do colaborador