在Rasa Core HTTP API中启用CORS支持

时间:2018-04-24 06:36:09

标签: angular cors rasa-nlu rasa-core

我正在尝试使用Rasa Core框架的默认MoodBot example。我开发了一个简单的Angular 5应用程序作为会话流程的前端。 Rasa HTTP API使用以下命令在端口5005(我们称之为http://my.very.own.server:5005/)的基于Linux的后端服务器上运行:

python3 -m rasa_core.server -d models/dialogue -u models/nlu/default/current -o out.log

我可以使用Postman应用程序与服务器通信并获得有效的响应。但是当我从我的Angular应用程序中尝试相同时,它会返回404 (Not found)错误。

使用邮差(工作):

POST :my.very.own.server:5005 / conversation / default / parse
请求正文:{“查询”:“hi”}
标题:内容类型:application / json
响应:成功(200) - 收到有效的JSON内容

使用Angular应用(不工作):

public getResponse(query: string) {

  let finalUrl: string = "http://my.very.own.server/" + "conversations/default/parse/";

  let data = {
    'query' : query
  }
  return this.http.post(
      `${finalUrl}`, data
    ).map(res => {
      return res.json()
    })
}

// Call the method using:

getResponse("hi").subscribe(res => {
  console.log(res);
});

这会导致控制台错误:

Failed to load http://my.very.own.server:5005/conversations/default/parse/:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:4200' is therefore not allowed access.
The response had HTTP status code 404.

我尝试过:

  1. 我尝试使用额外的--cors参数运行Rasa服务器(如here所示):
  2. python3 -m rasa_core.server -d models/dialogue -u models/nlu/default/current -o out.log --cors ["*"]

    1. 我尝试将"cors_origins" : ["*"]添加到nlu_model_config.json文件中(如here所示)。
    2. 两种方式都没有区别。我在这里做错了什么,以及如何从Rasa HTTP API正确启用CORS支持?

1 个答案:

答案 0 :(得分:1)

我们最近解决了这个问题,因此您需要this PR。现在你必须克隆master,但我们很快就会发布新版本0.9,所以它也可以在pypi上使用。