Не удается получить доступ к API IBM Watson локально из-за CORS в приложении Rails / AJAX
Там, кажется, не так много ответов (но много вопросов) о том, как справиться с этим, поэтому я собираюсь добавить свое имя в припев и молиться за ответ, который не касается Node.
Моя ошибка через консоль Chrome:
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.
Я использую запрос Rails AJAX как таковой:
$.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.")
}
});
Для этого конкретного приложения-прототипа я настроил Rack :: Cors, чтобы все работало. Это в моем 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
Есть ли кто-нибудь, кто знает, как эти вещи должны быть настроены, чтобы обойти это? Я должен предположить, что есть способ получить доступ к этим API без запуска экземпляра Node.