我有两个响铃网站:mysite.com
和api.mysite.com
。 api.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])))
当我执行GET
或POST
请求时,预检成功,但GET
或POST
失败并显示:
阻止跨源请求:同源策略禁止读取 http://api.site.com/v1/site处的远程资源。 (原因:CORS 标题'Access-Control-Allow-Origin'缺失。)
我可以在调试器中看到Access-Control-Allow-Origin
响应中包含OPTIONS
但后续GET
或POST
响应中没有。
知道怎么了?我的应用程序有点复杂,还有bidi
,liberator
和一些hosts
文件和nginx
内容。我认为暂时可以搁置这些问题,这个问题可以追溯到中间件或中间件配置的一些问题。
答案 0 :(得分:0)
我不确定您是否可以在子域上使用通配符。有关详细信息,请参阅this SO answer。看起来the spec需要域名或通配符,但不需要两者。
您可以尝试添加域名以查看是否可以解决问题,然后再从那里开始。
wrap-cors :access-control-allow-origin [#"http://sitename.com"]