对启用了ring-cors的站点的请求失败

时间:2016-09-30 10:34:07

标签: clojure cors middleware ring

我有两个响铃网站:mysite.comapi.mysite.comapi.mysite.com已启用ring-cors中间件:

(def app
  (-> (make-handler v1-routes)
      (wrap-defaults api-defaults)
      (wrap-cors :access-control-allow-origin  [#".*"]
                 :access-control-allow-headers ["Content-Type"]
                 :access-control-allow-methods [:get :put :post :delete :options])))

当我执行GETPOST请求时,预检成功,但GETPOST失败并显示:

  

阻止跨源请求:同源策略禁止读取   http://api.site.com/v1/site处的远程资源。 (原因:CORS   标题'Access-Control-Allow-Origin'缺失。)

我可以在调试器中看到Access-Control-Allow-Origin响应中包含OPTIONS但后续GETPOST响应中没有。

知道怎么了?我的应用程序有点复杂,还有bidiliberator和一些hosts文件和nginx内容。我认为暂时可以搁置这些问题,这个问题可以追溯到中间件或中间件配置的一些问题。

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以在子域上使用通配符。有关详细信息,请参阅this SO answer。看起来the spec需要域名或通配符,但不需要两者。

您可以尝试添加域名以查看是否可以解决问题,然后再从那里开始。

wrap-cors :access-control-allow-origin  [#"http://sitename.com"]