[skip ci] Fix: browser preflight

This commit is contained in:
nyagami
2024-07-05 23:41:38 +07:00
parent f9b359fcc4
commit b07678f7cc
+21 -9
View File
@@ -25,8 +25,6 @@ const proxyRequest = (req, res) => {
}; };
proxy.on('proxyRes', function (proxyRes, req, res) { proxy.on('proxyRes', function (proxyRes, req, res) {
var requestState = req.corsAnywhereRequestState;
var statusCode = proxyRes.statusCode; var statusCode = proxyRes.statusCode;
if ( if (
statusCode === 301 || statusCode === 301 ||
@@ -38,8 +36,6 @@ proxy.on('proxyRes', function (proxyRes, req, res) {
req.method = 'GET'; req.method = 'GET';
req.headers['content-length'] = '0'; req.headers['content-length'] = '0';
delete req.headers['content-type']; delete req.headers['content-type'];
requestState.location = parsedLocation;
// Remove all listeners (=reset events to initial state) // Remove all listeners (=reset events to initial state)
req.removeAllListeners(); req.removeAllListeners();
@@ -54,8 +50,6 @@ proxy.on('proxyRes', function (proxyRes, req, res) {
proxyRequest(req, res); proxyRequest(req, res);
return false; return false;
} }
res.setHeader('Access-Control-Allow-Origin', CLIENT_HOST);
res.setHeader('Access-Control-Allow-Credentials', true);
for (const _header in proxyRes.headers) { for (const _header in proxyRes.headers) {
res.setHeader(_header, proxyRes.headers[_header]); res.setHeader(_header, proxyRes.headers[_header]);
} }
@@ -78,8 +72,6 @@ const cookiesHandler = (req, res) => {
}); });
req.on('end', () => { req.on('end', () => {
temp_cookies = cookies; temp_cookies = cookies;
res.setHeader('Access-Control-Allow-Origin', CLIENT_HOST);
res.setHeader('Access-Control-Allow-Credentials', true);
res.end(); res.end();
}); });
}; };
@@ -87,6 +79,22 @@ const cookiesHandler = (req, res) => {
http http
.createServer(function (req, res) { .createServer(function (req, res) {
const path = req.url.replace(/^\//, ''); const path = req.url.replace(/^\//, '');
res.setHeader('Access-Control-Allow-Origin', CLIENT_HOST);
res.setHeader('Access-Control-Allow-Credentials', true);
if (req.headers['access-control-request-method']) {
res.setHeader(
'access-control-allow-methods',
req.headers['access-control-request-method'],
);
delete req.headers['access-control-request-method'];
}
if (req.headers['access-control-request-headers']) {
res.setHeader(
'access-control-allow-headers',
req.headers['access-control-request-headers'],
);
delete req.headers['access-control-request-headers'];
}
if (path === 'cookies') { if (path === 'cookies') {
cookiesHandler(req, res); cookiesHandler(req, res);
} else { } else {
@@ -106,7 +114,11 @@ http
req.headers.host = _url.host; req.headers.host = _url.host;
req.url = _url.toString(); req.url = _url.toString();
res.statusCode = 200; res.statusCode = 200;
proxyRequest(req, res); if (req.method === 'OPTIONS') {
res.end();
} else {
proxyRequest(req, res);
}
} }
}) })
.listen(3001); .listen(3001);