CORS Проблема при использовании двух экспресс-приложений - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь использовать два экспресс-сервера Node.js на Windows Server 2012, каждый из которых имеет свое полное доменное имя (example1.b.br |emple2.b.br).Этими приложениями являются два чат-бота Уотсона, поэтому им обоим нужно использовать маршрут / диалог для связи с IBM.

Один чат-бот использует порт 443, а другой - 8443.

Проблема заключается в следующем:Каждый из них находится в разных каталогах и имеет свой собственный подкаталог с именем public, но когда я запускаю оба сервера, тот, который использует порт 8443, использует подкаталог public сервера сервера порта 443.

  • Chatbots

    • сертификаты
    • Chatbot1

      • node_modules

      • public

      • css
      • script
    • Chatbot2
      • node_modules
      • public
      • css
      • скрипт

Chatbot1 app.js:

const AssistantV1 = require('watson-developer-cloud/assistant/v1');
const express = require('express');
const bodyParser = require('body-parser');
const http = require('http');
const https = require('https');
var fs = require('fs');
var httpApp = express();

var workspace;

var options = {
  key: fs.readFileSync('certificates/key.pem'),
  cert: fs.readFileSync('certificates/server.crt')
};

const app = express();

app.use(bodyParser.json());
app.use(express.static('./public'));

const port = 80;
const httpsPort = 8443;

httpApp.set('port', process.env.PORT || 80);

const assistant = new AssistantV1({
  username: 'XXXXX',
  password: 'XXXXX',
  url: 'https://gateway.watsonplatform.net/assistant/api/',
  version: '2018-02-16'
});

  workspace = 'XXXXXXX';
  app.post('/conversation/', (req, res) => {
    const { text, context = {} } = req.body;
    const params = {
      input: { text },
      workspace_id: workspace,
      context,
    };

    assistant.message(params, (err, response) => {
      if (err) res.status(500).json(err);

      res.json(response);
    });
  });

try{
  //var httpServer = http.createServer(httpApp, app).listen(port);
  var httpsServer = https.createServer(options, app).listen(httpsPort); 
  //httpServer.listen(port, () => console.log(`Running on port ${port}`));
  httpsServer.listen(httpsPort, 'exemple1.b.br', () => console.log(`HTTPS Running on port ${httpsPort}`));  
  console.log(`---------------------------------`);
  console.log(`-----------ROBO INICIADO---------`);
  console.log(`---------------------------------`);
}catch(err){
  console.log(`*********************************`);
  console.log(`*****Falha ao iniciar o Robo*****`);
  console.log(`*********************************`);
  console.log(err);
} */

Chatbot2 app.js:

const AssistantV1 = require('watson-developer-cloud/assistant/v1');
const express = require('express');
const bodyParser = require('body-parser');
const http = require('http');
const https = require('https');
var fs = require('fs');
var httpApp = express();

var workspace;

var options = {
  key: fs.readFileSync('certificates/key.pem'),
  cert: fs.readFileSync('certificates/server.crt')
};

const app = express();

app.use(bodyParser.json());
app.use(express.static('./public'));

const port = 80;
const httpsPort = 443;

httpApp.set('port', process.env.PORT || 80);

const assistant = new AssistantV1({
  username: 'xxxxxxx',
  password: 'xxxxxx',
  url: 'https://gateway.watsonplatform.net/assistant/api/',
  version: '2018-02-16'
});

  workspace = 'XXXXXXX'
  app.post('/conversation/', (req, res) => {
    const { text, context = {} } = req.body;
    const params = {
      input: { text },
      workspace_id: workspace,
      context,
    };

    assistant.message(params, (err, response) => {
      if (err) res.status(500).json(err);

      res.json(response);
    });
  });


try{
  var httpsServer = https.createServer(options, app).listen(httpsPort); 
   httpsServer.listen(httpsPort, 'exemple2.b.br', () => console.log(`HTTPS Running on port ${httpsPort}`));  
  console.log(`---------------------------------`);
  console.log(`-----------ROBO INICIADO---------`);
  console.log(`---------------------------------`);
}catch(err){
  console.log(`*********************************`);
  console.log(`*****Falha ao iniciar o Robo*****`);
  console.log(`*********************************`);
}

Как я могу "заставить" сервер использовать свой собственный подкаталог?

1 Ответ

0 голосов
/ 11 февраля 2019

«Проблема» решена.

На самом деле, у меня не было знаний о том, как на самом деле работает полное доменное имя, и я немного виноват в Антивирусе.

example2.b.br don 'В его URL-адресе не нужно указывать «: 443», потому что этот порт используется по умолчанию для HTTPS.Но когда я использую example1.b.br, ему нужно ": 8443" после (https://example1.b.br:8443).

. По крайней мере, эта простая ошибка заставляет меня узнать об этой детали.

После этого, Я обнаружил, что антивирус сервера блокировал некоторые файлы. После создания исключения для порта для связи только через интрасеть проблема была решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...