Kann aufgrund von CORS in einer Rails / AJAX-App nicht lokal auf die IBM Watson-API zugreifen

Es scheint nicht viele Antworten (aber viele Fragen) zu geben, wie man damit umgeht. Ich werde dem Refrain meinen Namen hinzufügen und für eine Antwort beten, bei der es nicht um Node geht.

Mein Fehler über die Chrome-Konsole:

1. POST https://gateway.watsonplatform.net/visual-recognition-beta/api 
2. XMLHttpRequest cannot load https://gateway.watsonplatform.net/visual-recognition-beta/api. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 401.

Ich verwende eine Rails AJAX-Anfrage als solche:

$.ajax({
         method: "POST",
         version: 'v2-beta',
         url: "https://gateway.watsonplatform.net/visual-recognition-beta/api",
         password: "-----------",
         username: "-----------",
         version_date:'2015-12-02',
         visual_recognition: [
             {
             name: "visual-recognition-service",
             label: "visual_recognition",
             plan: "free",
             credentials: {
                 url: "https://gateway.watsonplatform.net/visual-recognition-beta/api",
                 password: "----------",
                 username: "---------"
               }
             }
           ],
         image: "/images/image1.jpg",
         contentType: 'application/json'
         }).done(function(msg){
         if (200) {
           console.log("This is a test for if.")
         } else {
           console.log("This is a test for else.")
         }
       });

Für diese spezielle Prototyp-App habe ich Rack :: Cors so eingerichtet, dass alles funktioniert. Dies ist in meiner application.rb:

config.middleware.insert_before 0, "Rack::Cors" do
      allow do
        origins '*'
        resource '*',
        :headers => :any,
        :methods => [:get, :post, :delete, :put, :patch, :options, :head],
        :expose  => ['access-token', 'expiry', 'token-type', 'uid', 'client', 'auth-token'],
        :max_age => 0
      end
end

Gibt es da draußen jemanden, der weiß, wie diese Dinge konfiguriert werden müssen, um dies zu umgehen? Ich muss davon ausgehen, dass es eine Möglichkeit gibt, auf diese APIs zuzugreifen, ohne eine Node-Instanz starten zu müssen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage