yandex-cloud-functions-router
Version:
Node router for Yandex Cloud Functions
25 lines (24 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.appendCorsHeadersToMainResponse = void 0;
const getHeaderValue_1 = require("../getHeaderValue");
const isOriginValid_1 = require("./isOriginValid");
const isRequestMeetCorsRules_1 = require("./isRequestMeetCorsRules");
const isRequestSimple_1 = require("./isRequestSimple");
/**
* Append CORS headers to the main response if CORS enabled.
*/
const appendCorsHeadersToMainResponse = (request, response, corsOptions) => {
var _a;
if (response && corsOptions.enable) {
const currentOrigin = getHeaderValue_1.getHeaderValue(request, 'origin');
if (currentOrigin && isOriginValid_1.isOriginValid(corsOptions, currentOrigin)) {
if (isRequestSimple_1.isRequestSimple(request) || isRequestMeetCorsRules_1.isRequestMeetCorsRules(request, corsOptions)) {
const isCookieSet = Boolean(getHeaderValue_1.getHeaderValue(request, 'cookie'));
return Object.assign(Object.assign({}, response), { headers: Object.assign(Object.assign(Object.assign({}, ((_a = response.headers) !== null && _a !== void 0 ? _a : {})), { 'Access-Control-Allow-Origin': currentOrigin }), (corsOptions.allowCredentials === true && isCookieSet ? { 'Access-Control-Allow-Credentials': 'true' } : {})) });
}
}
}
return response;
};
exports.appendCorsHeadersToMainResponse = appendCorsHeadersToMainResponse;