diff --git a/packages/react-native/Libraries/Image/ImageSourceUtils.js b/packages/react-native/Libraries/Image/ImageSourceUtils.js index 7e5ea6436d5a..f1057d92ba11 100644 --- a/packages/react-native/Libraries/Image/ImageSourceUtils.js +++ b/packages/react-native/Libraries/Image/ImageSourceUtils.js @@ -12,6 +12,7 @@ import type {ResolvedAssetSource} from './AssetSourceResolver'; import type {ImageProps} from './ImageProps'; +import type {ImageURISource} from './ImageSource'; import resolveAssetSource from './resolveAssetSource'; @@ -87,7 +88,14 @@ export function getImageSourcesFromImageProps(imageProps: ImageProps): } else if (src != null) { sources = [{uri: src, headers: headers, width, height}]; } else if (source != null && source.uri && Object.keys(headers).length > 0) { - sources = [{...source, headers}]; + const sourceHeaders = (source as ImageURISource).headers; + sources = [ + { + ...source, + headers: + sourceHeaders != null ? {...sourceHeaders, ...headers} : headers, + }, + ]; } else { sources = source; } diff --git a/packages/react-native/Libraries/Image/__tests__/Image-itest.js b/packages/react-native/Libraries/Image/__tests__/Image-itest.js index a1f3140f850b..6eb0d0e8a9e1 100644 --- a/packages/react-native/Libraries/Image/__tests__/Image-itest.js +++ b/packages/react-native/Libraries/Image/__tests__/Image-itest.js @@ -102,19 +102,28 @@ describe('', () => { ); }); - it('sets the "Access-Control-Allow-Credentials" header in "use-credentials" mode', () => { + it('adds the credentials header without replacing source headers', () => { const root = Fantom.createRoot(); Fantom.runTask(() => { root.render( - , + , ); }); expect( root.getRenderedOutput({props: ['source-header']}).toJSX(), ).toEqual( - , + , ); }); });