我使用scaffolded网站和静态子域来提供我的静态文件。 正在使用来自Javascript游戏的显式网址请求静态文件,我正在使用我的yesod应用程序来提供服务(使用Phaser框架编写)。
来自Javascript控制台的示例错误消息是:
Phaser.Loader error loading file: player1_icon from URL http://example.com/static/games/mygame/images/player1/icon.png
Image from origin 'http://example.com' has been blocked from loading by Cross-Origin Resource Sharing policy:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
一些研究表明,在处理函数中添加行addHeader "Access-Control-Allow-Origin" "*"
可以解决这个问题。然而,静态路由不使用处理函数,所以我不知道我会把它放在哪里。
非常感谢任何帮助。
答案 0 :(得分:2)
这可以通过使用添加此标头的WAI中间件来实现。该中间件将添加到您的Application
模块中。 wai-extra软件包中有许多中间件可以作为如何执行此操作的示例。
更一般地说:这可能是构建yesod-static本身的一个特性。你能打开关于它的Github问题吗?