mirror of
https://github.com/usebruno/bruno.git
synced 2026-07-07 22:18:33 +00:00
Merge branch 'main' into feat/websocket-engine
This commit is contained in:
@@ -7,6 +7,7 @@ const { setupProxyAgents } = require('../../utils/proxy-util');
|
||||
const { addCookieToJar, getCookieStringForUrl } = require('../../utils/cookies');
|
||||
const { preferencesUtil } = require('../../store/preferences');
|
||||
const { safeStringifyJSON } = require('../../utils/common');
|
||||
const { createFormData } = require('../../utils/form-data');
|
||||
|
||||
const LOCAL_IPV6 = '::1';
|
||||
const LOCAL_IPV4 = '127.0.0.1';
|
||||
@@ -328,6 +329,41 @@ function makeAxiosInstance({
|
||||
type: 'info',
|
||||
message: `Changed method from ${originalMethod.toUpperCase()} to GET for ${statusCode} redirect and removed request body`,
|
||||
});
|
||||
} else {
|
||||
// For 307, 308 and other status codes: preserve method and body
|
||||
if (requestConfig.data && typeof requestConfig.data === 'object' &&
|
||||
requestConfig.data.constructor && requestConfig.data.constructor.name === 'FormData') {
|
||||
|
||||
const formData = requestConfig.data;
|
||||
if (formData._released || (formData._streams && formData._streams.length === 0)) {
|
||||
if (error.config._originalMultipartData && error.config.collectionPath) {
|
||||
timeline.push({
|
||||
timestamp: new Date(),
|
||||
type: 'info',
|
||||
message: `Recreating consumed FormData for ${statusCode} redirect`,
|
||||
});
|
||||
|
||||
const recreatedForm = createFormData(error.config._originalMultipartData, error.config.collectionPath);
|
||||
requestConfig.data = recreatedForm;
|
||||
|
||||
const formHeaders = recreatedForm.getHeaders();
|
||||
Object.assign(requestConfig.headers, formHeaders);
|
||||
|
||||
// preserve the original data for potential future redirects
|
||||
requestConfig._originalMultipartData = error.config._originalMultipartData;
|
||||
requestConfig.collectionPath = error.config.collectionPath;
|
||||
} else {
|
||||
timeline.push({
|
||||
timestamp: new Date(),
|
||||
type: 'info',
|
||||
message: `FormData consumed but no original data available for ${statusCode} redirect`,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
requestConfig._originalMultipartData = error.config._originalMultipartData;
|
||||
requestConfig.collectionPath = error.config.collectionPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (preferencesUtil.shouldSendCookies()) {
|
||||
|
||||
@@ -452,6 +452,8 @@ const registerNetworkIpc = (mainWindow) => {
|
||||
|
||||
if (request.headers['content-type'] === 'multipart/form-data') {
|
||||
if (!(request.data instanceof FormData)) {
|
||||
request._originalMultipartData = request.data;
|
||||
request.collectionPath = collectionPath;
|
||||
let form = createFormData(request.data, collectionPath);
|
||||
request.data = form;
|
||||
extend(request.headers, form.getHeaders());
|
||||
|
||||
Reference in New Issue
Block a user