Bug 284443

Summary: Unable to render video on iOS browser if src a CDN, in request header range is getting set as Range: bytes=0-1
Product: WebKit Reporter: Rahul <rsing>
Component: MediaAssignee: Nobody <webkit-unassigned>
Status: NEW    
Severity: Major CC: eric.carlson, jean-yves.avenard, jer.noble, karlcow, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Safari 17   
Hardware: iPhone / iPad   
OS: iOS 17   
See Also: https://bugs.webkit.org/show_bug.cgi?id=211323
Attachments:
Description Flags
The attachment shows the current behavior on iOS device and network calls
none
network logs when call made to cdn to get the video none

Rahul
Reported 2024-12-10 22:35:44 PST
Created attachment 473536 [details] The attachment shows the current behavior on iOS device and network calls Example if we render a video using below : <video controls="" autoplay="" name="media"><source src="https://cdn-sharing.adobecc.com/......." type="video/mp4"></video> then video does not get render on iOS device i tried on safari and chrome on iOS as well. to reproduce use url on iOS safari 17 and above: https://new.express.adobe.com/published/urn:aaid:sc:US:aac581ef-4c12-446f-9e1d-a783d88606f2 I can see that network call to cdn with header "Range: bytes=0-1" returns 200. The problem is indeed the Range header, because if you set it you need to iterate over the range of bytes for the content length returned by the initial request We tested out modifying the range header and if we set it to the content length like below, the request works curl --request GET \ --url 'https://cdn-sharing.adobecc.com/composite/component/id/urn:aaid:sc:US:aac581ef-4c12-446f-9e1d-a783d88606f2?component_id=54e3257a-04a0-4662-a1cc-5418ce9d8a5c&revision=06fc6bc6-cd65-444b-8285-e54895ca70a2&api_key=projectx_webapp&access_token=1733939192_urn%3Aaaid%3Asc%3AUS%3Aaac581ef-4c12-446f-9e1d-a783d88606f2%3Bpublic_51071890bf43306533bd1c192bf81e99a3a998f4' \ --header 'Accept: */*' \ --header 'Accept-Encoding: identity' \ --header 'Connection: Keep-Alive' \ --header 'Range: bytes=0-1994310' \ --header 'Sec-Fetch-Dest: video' \ --header 'Sec-Fetch-Mode: no-cors' \ --header 'Sec-Fetch-Site: same-origin' \ --header 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1' if you set the Range to the full length of file which is 1994310 the content should be displayable The request log proves that iOS only fetches the first two bytes of the file because the header Range: bytes=0-1 is passed
Attachments
The attachment shows the current behavior on iOS device and network calls (113.34 MB, video/quicktime)
2024-12-10 22:35 PST, Rahul
no flags
network logs when call made to cdn to get the video (24.48 KB, text/plain)
2024-12-10 22:36 PST, Rahul
no flags
Rahul
Comment 1 2024-12-10 22:36:36 PST
Created attachment 473537 [details] network logs when call made to cdn to get the video
Alexey Proskuryakov
Comment 2 2024-12-11 17:16:10 PST
I can reproduce that https://new.express.adobe.com/published/urn:aaid:sc:US:aac581ef-4c12-446f-9e1d-a783d88606f2 doesn't play on an iPhone, and does on a Mac. Using "Range: bytes=0-1" in one of the requests is not necessarily incorrect, although the server is supposed to return code 206 for that, not 200. This sounds much like bug 211323, but I'll leave it for experts to analyze more deeply.
Radar WebKit Bug Importer
Comment 3 2024-12-17 22:36:25 PST
Note You need to log in before you can comment on or make changes to this bug.