当前位置: 首页 > 面试题库 >

由于Rails / AJAX应用程序上的CORS,无法在本地访问IBM Watson API

江华容
2023-03-14
问题内容

关于如何处理这个问题似乎没有很多答案(但是有很多问题),所以我将把我的名字添加到合唱中,并为不涉及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: 删除了不推荐使用的服务



 类似资料:
  • 我是kubernetes的新手,我尝试使用Kubernete运行小型应用程序。我创建了docker镜像并使用minikube运行它。所以应用程序非常简单,它只打印hello world。 我的dockerfile文件: deployment.yaml 我运行命令: 创建deployment.yaml 输出是: 服务/myhelloworldservice已创建 创建的部署.apps/我的问候世界

  • 2017-05-20 15:23:31+0200:env:{“rack.version”=>[1,3],“rack.errors”=>#>,“rack.multithread”=>true,“rack.multiprocess”=>false,“rack.run_once”=>false,“script_name”=>>“query_string”=>>“http/1.1”,“server_sof

  • 如何将运行在Docker中的spring boot(JAR)应用程序连接到计算机上的MySql服务器?[我试过不同的帖子,但都没用] 在我的spring boot'Application.Properties'中,我有: 我尝试了许多选择: 但是,唉,我无法连接到MySql服务器。Hibernate失败。在我的CAAS提供程序上,这一切都运行良好--当然,使用已知的容器名称。 我的Dockerfi

  • 我正在尝试将我的JavaSpring Boot Web应用程序部署到Heroku。 要在本地启动它,我运行: 然后 因此,我为Heroku创建了Procfile: 我使用Heroku-Github集成,应用程序从Github部署到Heroku。所以我就把它推到那里。 但应用程序不会启动。 给我: 不显示目录。 我认为Heroku没有构建这个应用程序。但是我做错了什么?提前感谢您的建议!

  • 我在AWS弹性豆茎上托管了我的Spring引导应用程序,但是当我试图用公共网址访问它时,它给我502网关错误。在日志中,我可以看到以下错误:2017/08/05 20:10:33[错误] 22965#0:*157连接()失败(111:连接拒绝)而连接到上游,客户端: XXX.68.241.XXX,服务器:,请求:"GET/swagger-ui.htmlHTTP/1.1",上游:"http://12

  • 我将我的文件夹(myApp)复制到Tomcat8的webapps文件夹中。 然后我转到“Tomcat Web Application Manager”&在那里看到“/myApp”running=false。然后单击Start&发现了以下错误: 注意:这是myApp的web.xml Catalina.2014-05-09.log: