У меня есть такая простая node.js реализация прокси-сервера:
const s = http.createServer((req, res) => {
console.log('req method:', req.method);
if(String(req.method || '').toUpperCase() === 'OPTIONS'){
res.setHeader('Access-Control-Expose-Headers', '*');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Max-Age', '3600');
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', '*');
res.setHeader('Access-Control-Allow-Methods', '*');
res.setHeader('Connection', 'keep-alive');
res.setHeader('Access-Control-Request-Method', 'POST');
res.setHeader('Allow', 'GET, POST, PUT, DELETE, OPTIONS, HEAD');
res.setHeader('Allowed', 'GET, POST, PUT, DELETE, OPTIONS, HEAD');
return res.writeHead(200);
}
// ...
});
проблема в том, что он не получает никаких запросов, кроме запросов OPTIONS, и я подозреваю, что это потому, что он не обрабатывает запросы OPTIONS правильно. Я хочу разрешить все, потому что все это выполняется локально на localhost - что-то не так с обработкой запросов OPTIONS для этого прокси-сервера?
Когда я использую библиотеку http-proxy, кажется, что все работает хорошо:
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer({target:'http://localhost:2020'});
const s = http.createServer((req,res) => proxy.web(req,res));
.. поэтому что-то не так с моей реализацией ... Я думаю, что самый основной вопрос c - как прокси-сервер, я должен перенаправлять запросы OPTIONS на прокси-сервер или просто отвечать рано? это определенно первый пункт решения ..