关于如何处理这个问题似乎没有很多答案(但是有很多问题),所以我将把我的名字添加到合唱中,并为不涉及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
有没有人知道如何配置这些东西来解决这个问题?我必须假设有一种无需启动Node实例即可访问这些API的方法。
以下服务支持CORS:
以下服务不支持CORS
我们正在努力增加对其余服务的支持。
正如@ brian- martin所建议的那样,您不应在浏览器中使用您的凭据。您可以做的就是使用授权服务获取令牌,然后使用该令牌代替用户名和密码。看一下有关如何使用令牌的本教程
UPDATE 04/07: 添加了支持CORS的服务列表(感谢Nathan) UPDATE 07/10: 删除了不推荐使用的服务