2016-09-30 50 views
0

我有两个环网站: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响应调试器看到。

任何想法是什么?我的应用程序有点复杂,并且还有bidi,liberator和一些hosts文件和nginx事情正在进行。我认为这些可以暂时搁置,而这个问题可能会导致中间件或中间件配置出现问题。

回答

0

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

你可能会尝试添加你的域名,看看这是否解决了问题,然后从那里去。

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

它看起来像'ring-cors'匹配给定的正则表达式,并匹配时将原点与'access-control-allow-origin'头相关联。所以没有,这似乎不是答案。 – deadghost