express-request-router v1.0.4
Express-Request-Router
Роутер для фреймворка Express, который выполняет запросы с указанными параметрами и возвращает результат. На данный момент положение дел такое, что используя одни лишь ajax-запросы, нельзя обратиться к любому ресурсу. Так же, существует CORS-спецификация, которая требует дополнительных заголовков со стороны сервера. Предоставляются они не всеми. Некоторыми исходя из политики безопасности, некоторыми из-за незнания. Данный модуль позволяет отсылать запросы со стороны сервера и решает вышеописанные проблемы.
Установка
Этот модуль устанавливается с помощью NPM:
npm install -S express-request-router
Данный код запускает Express-сервер, который при запросах к "localhost:3000/request" передаёт управление expressRequestRouter.
const app = require('express')();
const requestRouter = require('express-request-router');
app.use('/request', requestRouter);
app.listen(3000, () => {
console.log('Сервер запущен на порту 3000.');
});
Использование
Если становится понятно, что политика безопасности какого-либо сайта не позволяет выполнить кроссдоменный запрос, можно выполнить запрос к localhost:3000/request передав в теле заголовка JSON-объект со следующими параметрами:
url: string
- Ресурс к которому нужно выполнить запрос.method: string = 'GET'
- HTTP-метод запроса.headers: object = {}
- HTTP-заголовки запроса.redirect: string = 'follow'
- можно поставить 'follow' для обычного поведения при коде 30x (следовать редиректу) или 'error' для интерпретации редиректа как ошибки.body: string = ''
- Тело запроса.proxy: string
- HTTP-прокси через который будет выполнен запрос. (Пример: http://5.188.233.174:3000@1YZ8VQ:ANEOSWWEJE)
Пример
(async function () {
try {
let response = await fetch('/request', {
headers: {'Content-Type': 'application/json'},
method: 'post',
body: JSON.stringify({
url: 'https://2ip.ru',
method: 'GET'
})
})
let ip2 = document.createElement('div');
ip2.innerHTML = await response.text();
document.body.appendChild(ip2);
}
catch (error) {
console.error(error);
}
})();