mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
68e83901f3
PR-URL: https://github.com/nodejs/node/pull/46912 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
33 lines
1.3 KiB
JavaScript
33 lines
1.3 KiB
JavaScript
const custom_cors_response = (payload, base_url) => {
|
|
base_url = base_url || new URL(location.href);
|
|
|
|
// Clone the given `payload` so that, as we modify it, we won't be mutating
|
|
// the caller's value in unexpected ways.
|
|
payload = Object.assign({}, payload);
|
|
payload.headers = payload.headers || {};
|
|
// Note that, in order to have out-of-the-box support for tests that don't
|
|
// call `setup({'allow_uncaught_exception': true})` we return a no-op JS
|
|
// payload. This approach will avoid hitting syntax errors if the resource is
|
|
// interpreted as script. Without this workaround, the SyntaxError would be
|
|
// caught by the test harness and trigger a test failure.
|
|
payload.content = payload.content || '/* custom-cors-response.js content */';
|
|
payload.status_code = payload.status_code || 200;
|
|
|
|
// Assume that we'll be doing a CORS-enabled fetch so we'll need to set ACAO.
|
|
const acao = "Access-Control-Allow-Origin";
|
|
if (!(acao in payload.headers)) {
|
|
payload.headers[acao] = '*';
|
|
}
|
|
|
|
if (!("Content-Type" in payload.headers)) {
|
|
payload.headers["Content-Type"] = "text/javascript";
|
|
}
|
|
|
|
let ret = new URL("/common/CustomCorsResponse.py", base_url);
|
|
for (const key in payload) {
|
|
ret.searchParams.append(key, JSON.stringify(payload[key]));
|
|
}
|
|
|
|
return ret;
|
|
};
|