2016-09-30 3 views
0

У меня есть два сайта: 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 терпит неудачу с:

Cross-Origin Request блокированного: та же политика происхождения запрещает чтение удаленного ресурса на http://api.site.com/v1/site. (Причина: CORS отсутствует заголовок 'Access-Control-Allow-Origin').

Я могу видеть в отладчике, что Access-Control-Allow-Origin включен в OPTIONS ответ, но не в последующем GET или POST ответ.

Любая идея, что случилось? Мое приложение немного сложное, а также имеет 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