如何在ClojureScript中创建CORS请求?

时间:2016-06-30 08:20:24

标签: cors clojurescript

我正在玩一个演示游戏和资产预加载。我的免费测试服务器不允许存储声音,因此我尝试在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,但它不会让我指定标题,或者......

0 个答案:

没有答案