我正在玩一个演示游戏和资产预加载。我的免费测试服务器不允许存储声音,因此我尝试在XMLHTttpRequest上加载免版税的声音。但是,我无法设置access-control-allow-origin
值。
我的声音加载器将声音放入资产原子中。相关部分似乎是:
(defn load-sound [url]
(let [request (js/XMLHttpRequest.)]
(.open request "GET" url true)
(.setRequestHeader request "Access-Control-Allow-Origin" baseurl)
(.send request)))
......或者为了完整起见:
(defn load-sound [id url]
(swap! assets #(assoc-in % [:snd id] {:data nil
:ready false}))
(let [ctx (:audio-ctx @assets)
request (js/XMLHttpRequest.)]
(.open request "GET" url true)
(set! (.-responseType request) "arraybuffer")
(.setRequestHeader request "Access-Control-Allow-Origin" baseurl)
(dommy/listen-once! request :load
(fn []
(.decodeAudioData ctx (.-response request)
(fn [buffer] (swap! assets #(assoc-in % [:snd id] {:data buffer
:ready true})))
(fn []
(asset-error! :snd id)))))
(dommy/listen-once! request :error (fn []
(asset-error! :snd id)))
(.send request)))
我在发送请求之前尝试添加(.setRequestHeader "access-control-allow-origin" baseurl)
,但它仍然会说“CORS-header access-control-allow-origin not set”。
当我在Firefox中从js-console创建请求时,输入我从cljs翻译的js-code,它成功了。
我做错了什么?
当然还有cljs-http,但它不会让我指定标题,或者......