3

我正在使用脚手架站点和静态子域来提供我的静态文件。静态文件是使用 Javascript 游戏中的显式 url 请求的,我使用我的 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" "*"在处理函数中添加该行可以解决这个问题。但是静态路由不使用处理函数,所以我不知道我会把它放在哪里。

任何帮助将不胜感激。

4

1 回答 1

2

这可以通过使用添加此标头的 WAI 中间件来完成。该中间件将添加到您的Application模块中。wai-extra 包中有许多中间件,可以用作如何执行此操作的示例。

更一般地说:这可能是一个值得构建到 yesod-static 本身的功能。你能打开一个关于它的 Github 问题吗?

于 2014-11-09T05:57:33.003 回答