diff --git a/frontend/src/features/soar/components/HttpParamsEditor.tsx b/frontend/src/features/soar/components/HttpParamsEditor.tsx index 1513428df..6075fa5ce 100644 --- a/frontend/src/features/soar/components/HttpParamsEditor.tsx +++ b/frontend/src/features/soar/components/HttpParamsEditor.tsx @@ -12,6 +12,13 @@ const METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'] as const BODY_METHODS = new Set(['POST', 'PUT', 'PATCH']) const SCHEMES = ['https', 'http'] as const const EMPTY_ROWS: Array<[string, string]> = [] +const DEFAULT_HEADER_ROWS: Array<[string, string]> = [ + ['Access-Control-Allow-Origin', '*'], + ['Content-Type', 'application/json'], + ['Accept', '*/*'], + ['Accept-Encoding', 'gzip, deflate, br'], + ['Connection', 'keep-alive'], +] type Row = [string, string] type RowCache = { rows: Row[]; selected: boolean[] } const HTTP_ROWS_CACHE = new Map() @@ -52,6 +59,7 @@ export function HttpParamsEditor({ nodeId, nodes, params: httpParams, readOnly, const urlRef = useRef(null) const bodyRef = useRef(null) const queryParamsRef = useRef>(queryParams) + const defaultHeadersNodeRef = useRef(null) const activeQueryParams = getActiveQueryParams(nodeId, queryParamsRef.current, queryParams) const previewBaseUrl = p.url || (rest.trim() ? `${scheme}://${rest}` : '') const fullUrlPreview = appendQueryParams(previewBaseUrl, activeQueryParams) @@ -89,6 +97,14 @@ export function HttpParamsEditor({ nodeId, nodes, params: httpParams, readOnly, onChange({ ...current, ...changes }) } + useEffect(() => { + if (readOnly || defaultHeadersNodeRef.current === nodeId) return + defaultHeadersNodeRef.current = nodeId + if (!p.headers) { + emit({ headers: Object.fromEntries(DEFAULT_HEADER_ROWS) }) + } + }, [nodeId, p.headers, readOnly]) + const commitUrl = (nextScheme: string, nextRest: string) => { const trimmed = nextRest.trim() const activeParams = getActiveQueryParams(nodeId, queryParamsRef.current, queryParams) @@ -392,7 +408,7 @@ function KeyValueRows({ if (!nextSelected[index]) return if (k.trim()) out[k.trim()] = v }) - onChange(Object.keys(out).length > 0 ? out : undefined) + onChange(out) } const setAt = (i: number, patch: { key?: string; value?: string }) => { @@ -566,6 +582,7 @@ function HeaderRows({ ', - Host: '', - 'User-Agent': 'PostmanRuntime/7.43.0', + 'Access-Control-Allow-Origin': '*', + 'Content-Type': 'application/json', Accept: '*/*', 'Accept-Encoding': 'gzip, deflate, br', Connection: 'keep-alive',