2016-09-16 2 views
0

У меня есть файл под названием Sitemap.xml по телефону Server1 и я хочу записать файл с другого сервера Server2.Записать в файл другого сервера

Файловая структура Server1

Server1:

  • приложение
  • просмотров
  • общественные
  • sitemap.xml
  • app.js

Sitemap можно получить по Server1/sitemap как я использовал ниже код в моем экспрессе-файл

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

Можете ли вы представить, можете ли вы это сделать просто? Это означало бы, что кто-то может удаленно изменять ваши файлы! Что вам нужно сделать, это создать API на сервере 1, что-то вроде/changeSitemap и называть server2 его – VirginieLGB

+0

На самом деле, я не хочу раскрывать свой backend API, поэтому я пытаюсь изменить файл с Server2 на Server1 – user3811978

+0

Ну это было бы еще хуже, если бы вы могли так сделать haha ​​ И вы всегда можете проверить, вызван ли звонок с Server2 или нет! – VirginieLGB

ответ

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 символов, чтобы быть достаточно сильным. И не забудьте обновлять его время от времени. А также это концепция.