문제
어느날 갑자기 회사 블로그 youtube iframe embed가 안되는 이슈가 제보됐다.
이미 iframe embed가 block되는 이슈를 겪어보았고, next.config.js 파일 히스토리를 확인해보니 다른 동료분께서 웹사이트 쪽도 cross-origin isolated 상태로 만들어버려서 iframe embed가 막히고 있었다.
태그에 credentialless 속성을 추가해도 해결되지 않았다.
문제 해결 과정
- react 18 최신 버전인데도 불구하고 JSX에서 iframe에 credentialless 속성을 넣으면 에러를 띄우고 있었다.
- 에러와 별개로 속성이 적용되리라 믿고 실행해 보아도 iframe embed는 막히고 있었고, inspector로 확인해보니 태그에 속성이 아예 들어가지 않고 있었다.
- 야매 방법이지만 useEffect와 useRef를 이용해서 setAttribute로 iframe 태그에 credentialless 속성을 강제로 주입하였다.
- 그래도 되지 않길레 useEffect를 사용해서 속성을 주입했으니까 html이 렌더링 되는 시점에는 credentialless 속성 없이 소스를 불러왔을테니 결과가 똑같은게 아닐까라는 생각을 했다.
- iframe refresh 관련해서 구글링 해봤더니 src 속성에 똑같은 값 넣는 트릭으로(
iframe.src = iframe.src
) refresh를 할 수 있어서 해결되었다.