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.