mirror of
https://github.com/alibaba/anyproxy.git
synced 2025-08-04 21:39:04 +00:00
pass through all the valid headers when proxing the WebSocket, and adds related test cases
This commit is contained in:
@@ -120,6 +120,7 @@ function isCommonResHeaderEqual(directHeaders, proxyHeaders, requestUrl) {
|
||||
*
|
||||
*/
|
||||
function isCommonReqEqual(url, serverInstance) {
|
||||
console.info('==> trying to get the url ', url);
|
||||
try {
|
||||
let isEqual = true;
|
||||
|
||||
@@ -139,6 +140,27 @@ function isCommonReqEqual(url, serverInstance) {
|
||||
delete directReqObj.headers['transfer-encoding'];
|
||||
delete proxyReqObj.headers['transfer-encoding'];
|
||||
|
||||
// delete the headers that should not be passed by AnyProxy
|
||||
delete directReqObj.headers.connection;
|
||||
delete proxyReqObj.headers.connection;
|
||||
|
||||
// delete the headers related to websocket establishment
|
||||
const directHeaderKeys = Object.keys(directReqObj.headers);
|
||||
directHeaderKeys.forEach((key) => {
|
||||
// if the key matchs 'sec-websocket', delete it
|
||||
if (/sec-websocket/ig.test(key)) {
|
||||
delete directReqObj.headers[key];
|
||||
}
|
||||
});
|
||||
|
||||
const proxyHeaderKeys = Object.keys(proxyReqObj.headers);
|
||||
proxyHeaderKeys.forEach((key) => {
|
||||
// if the key matchs 'sec-websocaket', delete it
|
||||
if (/sec-websocket/ig.test(key)) {
|
||||
delete proxyReqObj.headers[key];
|
||||
}
|
||||
});
|
||||
|
||||
isEqual = isEqual && directReqObj.url === proxyReqObj.url;
|
||||
isEqual = isEqual && isObjectEqual(directReqObj.headers, proxyReqObj.headers, url);
|
||||
isEqual = isEqual && directReqObj.body === proxyReqObj.body;
|
||||
|
||||
Reference in New Issue
Block a user