Ruby on rails Can';由于Rails/AJAX应用程序上的CORS,无法在本地访问IBM Watson API
关于如何处理这个问题,似乎没有太多的答案(但有很多问题),所以我将把我的名字加入合唱团,并祈祷一个不涉及节点的答案 通过Chrome控制台显示我的错误:Ruby on rails Can';由于Rails/AJAX应用程序上的CORS,无法在本地访问IBM Watson API,ruby-on-rails,ajax,cors,ibm-cloud,ibm-watson,Ruby On Rails,Ajax,Cors,Ibm Cloud,Ibm Watson,关于如何处理这个问题,似乎没有太多的答案(但有很多问题),所以我将把我的名字加入合唱团,并祈祷一个不涉及节点的答案 通过Chrome控制台显示我的错误: 1. POST https://gateway.watsonplatform.net/visual-recognition-beta/api 2. XMLHttpRequest cannot load https://gateway.watsonplatform.net/visual-recognition-beta/api. No 'Acc
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,让任何东西都可以工作。这在my 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,而不必启动节点实例。将您的Watson API密钥放在浏览器中是个坏主意,因为有人可以获取这些密钥,在其他应用程序中使用它们,您将为其访问付费。您需要从经过身份验证的服务器端应用程序调用API 把你的Watson API密钥放在浏览器中是个坏主意,因为有人会拿走这些密钥,在另一个应用程序中使用它们,你会为它们的访问付费。您需要从经过身份验证的服务器端应用程序调用API 以下服务支持:
- 音调分析器
- 从语音到文本
- 文本到语音
- 人格洞察力
- 谈话
- 语言翻译
- 视觉识别(部分支持)
- 自然语言理解
更新07/10:删除了不推荐的服务以下服务支持:
- 音调分析器
- 从语音到文本
- 文本到语音
- 人格洞察力
- 谈话
- 语言翻译
- 视觉识别(部分支持)
- 自然语言理解
更新07/10:删除了不推荐的服务这是一个原型应用程序,而不是生产应用程序,所以我只是想弄清楚如何破解一个解决方案。你是对的,通常情况下,我会使用一个单独的常量来确定这些值。这是一个原型应用程序,而不是生产应用程序,所以我只是想弄清楚如何破解一个解决方案。你是对的,通常,我会使用一个单独的常数来确定这些值。这不是沃森的问题。有关完整的讨论,请参阅这不是沃森的问题。有关完整的讨论,请参阅我们现在部分支持CORS,请参阅(和语音服务)哪个自然语言理解版本支持CORS?我认为
自然语言理解
用于支持CORS,但他们取消了支持。我们现在部分支持CORS,请参阅(和语音服务)哪个自然语言理解版本支持CORS?我认为自然语言理解
用于支持CORS,但他们取消了支持。