diff --git a/extensions/cornerstone/src/initWADOImageLoader.js b/extensions/cornerstone/src/initWADOImageLoader.js index 622a4262574..73a99ab8f9a 100644 --- a/extensions/cornerstone/src/initWADOImageLoader.js +++ b/extensions/cornerstone/src/initWADOImageLoader.js @@ -52,7 +52,7 @@ export default function initWADOImageLoader( use16BitDataType: Boolean(appConfig.useNorm16Texture) || Boolean(appConfig.preferSizeOverAccuracy), }, - beforeSend: function (xhr) { + beforeSend: function (xhr, imageId) { //TODO should be removed in the future and request emitted by DicomWebDataSource const sourceConfig = extensionManager.getActiveDataSource()?.[0].getConfig() ?? {}; const headers = userAuthenticationService.getAuthorizationHeader(); @@ -70,6 +70,15 @@ export default function initWADOImageLoader( Object.assign(xhrRequestHeaders, headers); } + const instance = cornerstone.metaData.get('instance', imageId); + const { CustomOffsetTable, CustomOffsetTableLengths, FileOffsets } = instance; + if (FileOffsets && !(CustomOffsetTable && CustomOffsetTableLengths)) { + // A seperate logic is used if offset tables are present in cornerstone3D. + const { startByte, endByte } = instance.FileOffsets; + const rangeHeader = { Range: `bytes=${startByte}-${endByte}` }; + Object.assign(xhrRequestHeaders, rangeHeader); + } + return xhrRequestHeaders; }, errorInterceptor: error => {