Я использовал Network.Wai.Middleware.Cors
«s simpleCors
, она работала должным образом для GET
запросов, но когда я пытаюсь сделать POST
запрос я получаю следующую задачуHaskell Йесод - CORS проблемы с браузерами OPTIONS запросов при выполнении POST запросы
OPTIONS /users
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Status: 400 Bad Request 0.032443s
единственный способ, которым я был в состоянии сделать это работа удалением simpleCors
из следующей части в Application.hs
-- | Convert our foundation to a WAI Application by calling @[email protected] and
-- applying some additional middlewares.
makeApplication :: App -> IO Application
makeApplication foundation = do
logWare <- makeLogWare foundation
-- Create the WAI application and apply middlewares
appPlain <- toWaiAppPlain foundation
return $ logWare $ defaultMiddlewaresNoLogging $ simpleCors $ appPlain
и добавив OPTIONS Метод ответа
optionsNewUserR :: Handler RepPlain
optionsNewUserR = do
return $ RepPlain $ toContent ("" :: Text)
и добавление заголовков CORS ... Но это грязное решение, потому что я должен был бы изменить все мои обработчики API! Любая помощь высоко ценится!
На самом деле я был в правильный путь, я сделал то же, что и вы, по сравнению с реализацией simpleCors, но вместо 'corsRequestHeaders = [" Authorization "," Content-Type "]' Я использовал 'corsRequestHeaders = []'. Что делает эта часть? Другое дело, что IDE/Editor вы используете для кодирования в Haskell :)? – FtheBuilder
Другое дело, мне пришлось добавить 'import Prelude' – FtheBuilder
Документация - ваш друг! Проверьте https://hackage.haskell.org/package/wai-cors-0.2.5/docs/src/Network.Wai.Middleware.Cors.html#corsMethods Ваш проект должен исключать Прелюдию по всему миру, возможно? Я просто использую Sublime Text или Vim, но это, вероятно, более общие вопросы, подходящие для обсуждения вне темы! – Mario