写入另一台服务器的文件

时间:2016-09-16 13:22:18

标签: node.js express routing

我在Sitemap.xml上有一个名为Server1的文件,我想从另一台服务器Server2写入此文件。

Server1

的文件结构

服务器1:

  • 应用
  • 视图
  • 公共
  • sitemap.xml的
  • app.js

Sitemap可由Server1/sitemap访问,因为我在我的快递文件中使用了以下代码

app.use('/sitemap', express.static(__dirname + '/sitemap.xml'));

1 个答案:

答案 0 :(得分:0)

您应该使用秘密令牌保护路由以避免暴露。希望这会对你有所帮助:

// Server 1
const fs = require('fs');

app.use(function(req, res, next) {
  var secret = req.headers.hasOwnProperty('authorization')
    ? req.headers.authorization
    : false;

  if (! secret || secret !== 'token [your-secret-token]') {
    res.status(403).send('Access forbidden');
  }

  // Create write stream to sitemap file
  var stream = fs.createWriteStream('sitemap.xml');

  // Redirect request body to stream which writes to sitemap file
  req.pipe(stream)
  .on('end', () => res.send('ok'));
});


// Server 2

const http = require('http');
const fs = require('fs');

var stream = fs.createReadStream('new-sitemap.xml');

var req = http.request({
  host: 'server1',
  headers: {
    authorization: 'token [your-secret-token]',
  },
});

req.on('response', (res) => {
  if (res.status === 200) {
    console.log('File uploaded');
  }
  else {
    console.error('File not loaded');
  }
});

// Write data from file into request body
stream.pipe(req);

请注意,令牌最小32个字符长度应足够强。不要忘记不时更新它。而且这也是一个概念。