티스토리 뷰
제가 https 기반 웹사이트에서 m3u8 영상링크를 불러와 재생시키기 위해서 video.js 자바스크립트를 사용했는데요,
동적으로 움직이지 않을 때는 정상작동하지만,
비동기적으로 팝업창처럼 껐다켰다하는 화면에서는 재생이 되지 않더라구요!!
그래서 처음에는 video를 iframe으로 변경해서,
따로 /video 페이지를 만들어서 m3u8영상을 불러와 video로 보여주고
메인페이지에서 iframe으로 src에 /video를 넣어 출력했습니다.
근데 이때 발생한 오류...
1. 영상 URL이 http라서 block처리 당함
https 기반의 사이트에서 iframe에는 무조건 https만 가능하고, http는 불가능한 것을 알았습니다.
이 문제를 해결하기 위해 아래 티스토리를 참고했어요.
https://dololak.tistory.com/611
수동적(Passive) 혼합 콘텐츠 - 이미지(사진, 그림 등)나 비디오 오디오같은 콘텐츠를 HTTP로 요청하는 것
능동적(Active) 혼합 콘텐츠 - 브라우저가 실행하게 되는 스크립트, CSS, iframe, 플래시 등의 콘텐츠를 HTTP로 요청하는 것
능동적 혼합 콘텐츠는 에러를 불러일으키지만,
수동적 혼합 콘텐츠는 warning 메세지를 띄워준다는 것!!!
==> 그래서 iframe을 video로 바꾸는 작업을 진행했습니다.
iframe -> video로 변경 후, m3u8 영상은 잘 불러와졌지만, 또 생긴 에러...
2. Mixed Content: The page at '' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ''. This request has been blocked; the content must be served over HTTPS.
모바일에서는 m3u8 영상이 정상 재생 되었지만, PC에서는 에러가 발생했습니다.
현재 페이지는 https인데, http를 왜 호출하냐며 블락당했습니다
iframe은 원천적으로 https->http호출이 안된다고 해서 video로 바꿨는데 video도 차단을 당하네요 ...!!!!
호출당하는쪽(http)에서 https로 SSL적용해서 변경해주기만 하면 아주 손쉽게 해결되는 문제이지만
호출하는 입장(https)이므로 아래 사이트를 참고하여 html 파일 헤더에 메타 태그를 추가해주었습니다
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
메타태그를 추가하면 대부분 정상적으로 호출된다고 하시더라고요. (stackoverflow에서)
저는 메타태그를 추가했더니 오류는 없어졌으나 영상은 여전히 뜨지 않았어요...
다른 m3u8영상을 보여주는 사이트들을 참고해보려고 여러 사이트들에 들어가서 개발자도구를 열어보니 모두 "https"로 된 영상URL을 호출하여 보여주고 있더라고요....ㅎㅎㅎ
rtsp(실시간 스트리밍 프로토콜)라는 것을 사용하는 곳도 있었는데 rtsp에 대해서는 추후에 자세히 공부하여 작성하도록 하겠습니다 😭😭😭😭😭흑
저는 결국 서버단에서 http로 시작하는 m3u8영상파일을 저장해서,
저장한 영상파일을 보여주는 페이지를 새로 만들고,
그 페이지를 iframe으로 불러와 보여주도록 수정해놓았습니다....
이 문제에 대해 잘 아시는 분 댓글남겨주세요 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭
(제발)
끝입니다
'프로그래밍 > Frontend' 카테고리의 다른 글
[echarts.js] legend selector: Add function to deselect all legends (2) | 2023.02.03 |
---|---|
[javascript] 자바스크립트에서 속성 목록 확인 방법 (0) | 2023.01.03 |
[javascript] NodeList.forEach 메서드 사용법 및 활용 예시 (0) | 2022.09.02 |
[html/jquery] element repeater (add, remove) (0) | 2022.06.14 |
[오류해결] html element 복제(clone) 후 클릭이벤트가 정상적으로 호출되지 않는 오류 (0) | 2022.06.13 |