我的应用程序使用一个书签,我需要允许CORS MyRouteR
所以我的书签代码可以使用这条路线的AJAX请求。
在我的配置/路由的第一稿,我给MyRouteR
只有一个请求方法,PUT支持。 但事实证明,(杜),我会需要支持OPTIONS方法为好,其浏览器使用CORS预检要求。
我结束了在配置/路线如下:
/myroute MyRouteR PUT OPTIONS
我是那种希望会有在模板哈斯克尔一些相关的机械,其处理的config /路由,以便加入期权在这条路线的方法列表会自动地导致CORS支持,但没有骰子。 世界上没有结束,但它会是有意义的,感觉优雅的方式。
为了使CORS的工作,我给的路线的选项处理程序:
optionsMyRouteR :: Handler RepPlain
optionsMyRouteR = do
addHeader "Access-Control-Allow-Origin" "*"
addHeader "Access-Control-Allow-Methods" "PUT, OPTIONS"
return $ RepPlain $ toContent ("" :: Text)
putMyRouteR :: Handler RepJson
putMyRouteR = do
addHeader "Access-Control-Allow-Origin" "*"
-- more stuff ...
这工作,但感觉略微未Yesodic,因为它是如此的样板。 于是,两个问题:
- 我们有比Yesodic更好的形容词?
- 是否有其他更好的方法让路由支持跨域请求?