mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
fix(Respond to Webhook Node)!: Surround HTML in iframe (#16978)
Co-authored-by: Tomi Turtiainen <10324676+tomi@users.noreply.github.com>
This commit is contained in:
42
packages/nodes-base/nodes/RespondToWebhook/utils/binary.ts
Normal file
42
packages/nodes-base/nodes/RespondToWebhook/utils/binary.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { isHtmlRenderedContentType, sandboxHtmlResponse } from 'n8n-core';
|
||||
import type { IBinaryData, IDataObject, IN8nHttpResponse } from 'n8n-workflow';
|
||||
import { BINARY_ENCODING } from 'n8n-workflow';
|
||||
import type { Readable } from 'stream';
|
||||
|
||||
const setContentLength = (responseBody: IN8nHttpResponse | Readable, headers: IDataObject) => {
|
||||
if (Buffer.isBuffer(responseBody)) {
|
||||
headers['content-length'] = responseBody.length;
|
||||
} else if (typeof responseBody === 'string') {
|
||||
headers['content-length'] = Buffer.byteLength(responseBody, 'utf8');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a response body for a binary data and sets the content-type header.
|
||||
*/
|
||||
export const getBinaryResponse = (binaryData: IBinaryData, headers: IDataObject) => {
|
||||
const contentType = headers['content-type'] as string;
|
||||
const shouldSandboxResponseData =
|
||||
isHtmlRenderedContentType(binaryData.mimeType) ||
|
||||
(contentType && isHtmlRenderedContentType(contentType));
|
||||
|
||||
let responseBody: IN8nHttpResponse | Readable;
|
||||
|
||||
if (binaryData.id) {
|
||||
responseBody = shouldSandboxResponseData
|
||||
? sandboxHtmlResponse(binaryData.data)
|
||||
: { binaryData };
|
||||
} else {
|
||||
const responseBuffer = Buffer.from(binaryData.data, BINARY_ENCODING);
|
||||
|
||||
responseBody = shouldSandboxResponseData
|
||||
? sandboxHtmlResponse(responseBuffer.toString())
|
||||
: responseBuffer;
|
||||
|
||||
setContentLength(responseBody, headers);
|
||||
}
|
||||
|
||||
headers['content-type'] ??= binaryData.mimeType;
|
||||
|
||||
return responseBody;
|
||||
};
|
||||
Reference in New Issue
Block a user