从外部应用程序调用 Bluemix 服务

Call Bluemix service from outside app

我用 Node-RedWatson 构建了一个简单的 translate service。直接从浏览器调用该服务是可以的,但是当我从我的 Angular app.

通过 http 调用该服务时出现错误 ( CORS )

Bluemix 允许 CORS 吗?

提前致谢。

一般来说,Bluemix 支持由许多部署到不同主机名的独立服务组成的应用程序。对于您推送到 Bluemix 的每个应用程序(可以是服务 API),您提供的名称将被添加到 .mybluemix.net. 如果您的应用程序遵循微服务架构的最佳实践你可能有两个或更多的子组件,它们位于不同的主机名上。现在,如果您有一个 front-end 需要从这些其他 Bluemix 应用程序(您的 AngularJS 应用程序)聚合信息,默认情况下将禁止访问其他子域。

解决方案是利用可用于控制您希望提供给 JavaScript 的 Bluemix 服务的 cross-origin 资源共享 (CORS) 的标准 HTTP headers客户:

  • Access-Control-Allow-Origin
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Headers

看看下面的博客post:Cross-origin resource sharing for Bluemix APIs

在您的 bluemix-settings.js 中添加这些代码行并重新推送您的应用程序

// The following property can be used to configure cross-origin resource sharing
    // in the HTTP nodes.
    // See https://github.com/troygoode/node-cors#configuration-options for
    // details on its contents. The following is a basic permissive set of options:
   httpNodeCors: {
      origin: "*",
     methods: "GET,PUT,POST,DELETE"
    },

在“functionGlobalContext: { }, 之后添加此代码