Как установить в socket.io заголовки headers
Пытаюсь настроить более безопасное взаимодействие с socket.io на портале но пока без особых успехов. В документации нашел вариант установки заголовков,
io.engine.on("initial_headers", (headers, request) => {
headers["X-Frame-Options"] = 'SAMEORIGIN';
headers["set-cookie"] = "mycookie=456";
});
попробовал и что-то не так, внизу скрин: куки установились а вот X-Frame-Options нет. Весь файл -
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const httpsOptions = {
key: fs.readFileSync(path.resolve(__dirname,'../ssl/privkey.pem')),
cert: fs.readFileSync(path.resolve(__dirname,'../ssl/cert.pem'))
};
/**
* Module dependencies.
*/
let app = require('../app');
// let debug = require('debug')('nagib:server');
// let http = require('http');
let https = require('https');
/**
* Get port from environment and store in Express.
*/
// let port = normalizePort(process.env.PORT || '80');
let port = normalizePort( '443'); // 443
app.set('port', port);
/**
* Create HTTP server.
*/
let server = https.createServer(httpsOptions, app);
// Redirect from http port 80 to https
let http = require('http');
http.createServer(function (req, res) {
res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url });
res.end();
}).listen(80);
/**
* Listen on provided port, on all network interfaces.
*/
let io = require('../api/modules/io');
io.attach(server,{
cookie: {
name: "sock_",
httpOnly: true,
path: "/"
}
});
require('../api/modules/session').setSession;
io.engine.on("initial_headers", (headers, request) => {
headers["X-Frame-Options"] = 'SAMEORIGIN';
headers["set-cookie"] = "mycookie=456";
});
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
let port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
let bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
process.exit(1);
break;
case 'EADDRINUSE':
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
let addr = server.address();
let bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
}
Ответы (1 шт):
Автор решения: Vyacheslav Potseluyko
→ Ссылка
с Вашим кодом все ОК. Я запустил его облегченную версию (без ssl и внешнего вебсервера) - все работает, заголовки на месте.
На скриншоте вы запрашивали JS библиотеку(статичный файл), отсюда и кривые заголовки
