diff --git a/CHANGELOG.md b/CHANGELOG.md index 42a051ae..e2915105 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## v1.2.61 + +- fix missing cors origin header when port and crossDomainPort are the same + ## v1.2.6 - properly fixed window.top issues when window.top isn't hammerhead diff --git a/package-lock.json b/package-lock.json index 5cbb3448..2fc5a49e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rammerhead", - "version": "1.2.6", + "version": "1.2.61", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "rammerhead", - "version": "1.2.6", + "version": "1.2.61", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index ff8d6634..a0758f60 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rammerhead", - "version": "1.2.6", + "version": "1.2.61", "description": "User friendly web proxy powered by testcafe-hammerhead", "main": "src/index.js", "scripts": { diff --git a/src/classes/RammerheadProxy.js b/src/classes/RammerheadProxy.js index 2ac39276..b7edcc03 100644 --- a/src/classes/RammerheadProxy.js +++ b/src/classes/RammerheadProxy.js @@ -13,6 +13,7 @@ const RammerheadLogging = require('../classes/RammerheadLogging'); const RammerheadJSMemCache = require('./RammerheadJSMemCache.js'); require('../util/fixCorsHeader'); +require('../util/fixCorsMissingOriginHeader.js'); require('../util/fixWebsocket'); require('../util/addMoreErrorGuards'); require('../util/addUrlShuffling'); diff --git a/src/util/fixCorsMissingOriginHeader.js b/src/util/fixCorsMissingOriginHeader.js new file mode 100644 index 00000000..0412ce13 --- /dev/null +++ b/src/util/fixCorsMissingOriginHeader.js @@ -0,0 +1,12 @@ +const transforms = require('testcafe-hammerhead/lib/request-pipeline/header-transforms/transforms'); +const BUILTIN_HEADERS = require('testcafe-hammerhead/lib/request-pipeline/builtin-header-names'); + +/** + * if we create this server with port === crossDomainPort, origin header doesn't get properly sent + * so we manually add it if reqOrigin !== url + */ + +transforms.forcedRequestTransforms[BUILTIN_HEADERS.origin] = (_src, ctx) => { + if (ctx.serverInfo.port != ctx.serverInfo.crossDomainPort) return void 0; + return ctx.dest.reqOrigin || ctx.dest.domain; +};