Как включить заголовки «Access-Control-Allow-Origin» для статических файлов в Yesod?

Я использую созданный шаблон сайта и статический поддомен для обслуживания своих статических файлов. Статические файлы запрашиваются с использованием явных URL-адресов из игр 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" "*" в функцию-обработчик может решить эту проблему. Однако статический маршрут не использует функцию обработчика, поэтому я не знаю, куда бы я это поместил.

Любая помощь будет принята с благодарностью.


person Normangorman    schedule 09.11.2014    source источник


Ответы (1)


Это может быть достигнуто с помощью промежуточного программного обеспечения WAI, которое добавляет этот заголовок. Это промежуточное ПО будет добавлено в ваш модуль Application. В пакете wai-extra есть несколько промежуточных программ, которые можно использовать в качестве примера того, как это сделать.

В более общем плане: эту функцию, вероятно, стоит встроить в сам yesod-static. Можете ли вы открыть вопрос Github об этом?

person Michael Snoyman    schedule 09.11.2014
comment
Возможно, здесь будет полезен wai-cors. - person Lubomír Sedlář; 09.11.2014