【发布时间】:2021-09-26 03:45:45
【问题描述】:
我正在使用如documentation 中所述的servant-options 包:
type RepositoryAPI = "repository" :> Get '[JSON] Repository
getRepository :: Handler Repository
getRepository = do
repository <- liftIO loadRawRepositoryFromFilesystem
return repository
server :: Server RepositoryAPI
server = getRepository
repositoryAPI :: Proxy RepositoryAPI
repositoryAPI = Proxy
app :: Application
app = logStdoutDev
$ cors (const $ Just policy)
$ provideOptions repositoryAPI
$ serve repositoryAPI server
where policy = simpleCorsResourcePolicy {
corsMethods = ["OPTIONS", "GET", "PUT", "POST"],
corsRequestHeaders = [ "Authorization", "Content-Type" ]
}
main :: IO ()
main = run 8081 app
但是对 URL 的 OPTIONS 请求仍然返回错误 400:
OPTIONS /repository
Accept: */*
Status: 400 Bad Request 0.000039136s
我做错了什么?尝试了不同的策略配置(没有“授权”或没有 corsMethods 或使用小写“内容类型”),但仍然没有运气。这可能是我需要在前端处理的事情吗?任何建议表示赞赏。
【问题讨论】: