Je rencontre un problème cross-origin resource sharing (CORS) avec mes Rails 3 application consommatrice reste simple, MongoDB api. J'ai quelques CoffeeScript/JavaScript qui tente de consommer le mongodb simple rest api, mais Chrome empêche le message de la console suivante:problème CORS avec Rails 3 consommation mongodb reste api
XMLHttpRequest cannot load http://127.0.0.1:28017/my-db/my-collection/. Origin http://127.0.0.1:3000 is not allowed by Access-Control-Allow-Origin.
J'ai ajouté les deux méthodes de régulation de ce blog post:
before_filter :cors_preflight_check
after_filter :cors_set_access_control_headers
def cors_set_access_control_headers
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
headers['Access-Control-Max-Age'] = '1728000'
end
def cors_preflight_check
if request.method == :options
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
headers['Access-Control-Allow-Headers'] = 'Content-Type, X-Requested-With, X-Prototype-Version'
headers['Access-Control-Max-Age'] = '1728000'
render text: '', content_type: 'text/plain'
end
end
Je peux voir les en-têtes sont présents pour ma page Rails. Cependant, cela ne fonctionne toujours pas.
Ma meilleure estimation est que quel que soit le serveur web que le simple repos mongodb api utilise doit inclure les en-têtes, mon application Rails. Quelqu'un peut-il confirmer ou nier?
J'ai aussi lu quelque part que je pouvais utiliser une règle de réécriture de proxy dans nginx. Cependant, cela est un peu fastidieux, d'autant plus que je ne suis pas en cours d'exécution nginx pour le développement, uniquement sur le serveur de production.