diff --git a/lib/hls/hls_parser.js b/lib/hls/hls_parser.js index 57f3b8570c..b80799778e 100644 --- a/lib/hls/hls_parser.js +++ b/lib/hls/hls_parser.js @@ -3753,14 +3753,26 @@ shaka.hls.HlsParser = class { // If unable to guess mime type, request a segment and try getting it // from the response. + let contentMimeType; + const type = shaka.net.NetworkingEngine.AdvancedRequestType.MEDIA_SEGMENT; const headRequest = shaka.net.NetworkingEngine.makeRequest( middleSegmentUris, this.config_.retryParameters); - headRequest.method = 'HEAD'; - const type = shaka.net.NetworkingEngine.AdvancedRequestType.MEDIA_SEGMENT; - const response = await this.makeNetworkRequest_( - headRequest, requestType, {type}); + try { + headRequest.method = 'HEAD'; + const response = await this.makeNetworkRequest_( + headRequest, requestType, {type}); + + contentMimeType = response.headers['content-type']; + } catch (error) { + if (error && error.code == shaka.util.Error.Code.HTTP_ERROR) { + headRequest.method = 'GET'; + const response = await this.makeNetworkRequest_( + headRequest, requestType, {type}); + + contentMimeType = response.headers['content-type']; + } + } - const contentMimeType = response.headers['content-type']; if (contentMimeType) { // Split the MIME type in case the server sent additional parameters. return contentMimeType.split(';')[0];