Вы можете использовать cors
для выполнения sh этого. Это довольно хорошее руководство по его настройке, в частности этот раздел . Вы можете настроить его для определенных маршрутов или по всем направлениям.
CORS устанавливает заголовок Access-Control-Allow-Origin
, о котором вы можете узнать больше здесь - он разрешает запросы только из указанных источников.
Имейте в виду, что вам не нужен этот пакет для выполнения sh этого .. вы всегда можете создать собственное промежуточное программное обеспечение для этого.
Что-то вроде:
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "http://yourdomain.com");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
В документации Express они предоставляют следующий демонстрационный код, который вы сможете использовать в качестве помощника.
Вы можете использовать временное промежуточное ПО со специальными заголовками ... но тогда все, кто имеет Чтобы сделать это, прочитайте исходный код на стороне клиента или посмотрите на вкладку сети в их браузере, чтобы выяснить, какие заголовки вы отправляете, чтобы затем скопировать их. Это не позволило бы случайным людям шпионить, хотя ..
const express = require('express');
const path = require('path');
const app = express();
const port = process.env.PORT || 3000;
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// Custom special middleware..
function blockBadHosts({ host, whitelistHeader, whitelistHeaderValue }) {
return (req, res, next) => {
if(req.headers['host'] === host) {
if(whitelistHeader && req.headers[whitelistHeader] === whitelistHeaderValue) {
next();
} else {
res.status(301).send('BAD REQUEST');
}
} else {
res.status(301).send("BAD REQUEST");
}
}
}
// Options for our custom middleware
const badHostOptions = {
host: "localhost:3000",
whitelistHeader: "x-my-special-header", // Request must contain this header..
whitelistHeaderValue: "zoo" // .. with this value
}
// This should succeed
app.get('/success', (req, res) => {
res.status(200).send("from /success");
});
// This should fail even if sent from Postman without correct headers
app.get('/failure', blockBadHosts(badHostOptions), (req, res) => {
res.status(200).send("from /failure");
});
// 404 route
app.use((req, res) => {
res.status(404).send("Uh oh can't find that");
})
app.listen(port, () => {
console.log(`App listening on port: '${port}'`);
});