JWPlayer 강좌 (부록) - Cross Domain Problem [2/4]
부록 2번째 이슈입니다.
* (1) HD Quality Toggling
* (2) Cross Domain Problem
* (3) JW Player Skins
* (4) Responsive JW Player (반응형 JW Player)
2. Cross Domain Problem (크로스 도메인 문제)
*Adobe Flash plugin과 HTML5 브라우저 및 디바이스에서의 Javascript 와 관련된 Cross Domain File Loading (Security) 제한 이슈 발생.
* 서비스하는 콘텐츠를 외부의 도메인에서 접근하는 것을 차단하는 것으로 WhiteList와 같은 형태로 동작.
(WhiteList는 리스트에 명시되지 않은 모든 도메인으로부터의 접근을 제한하는 것. 반대의 개념으로 BlackList가 있는데, 이는 모든 접근을 허용하고, 접근을 차단할 것들에 대해 리스트로 명시.)
* FLASH와 HTML5는 이러한 크로스 도메인 접근 허용과 불허에 대해 다른 방법을 제공.
Crossdmain File Loading Issue : http://support.jwplayer.com/customer/portal/articles/1403679-crossdomain-file-loading
2-1. Crossdomain in Flash
* JavaScript 의 Cross-Site Scripting 제한과 유사하게 동작함.
* 다음 파일에 대해 접근 권한을 제어함.
RSS feeds |
XML Skins |
VTT |
SRT & DFXP files |
M3U8 manifests & TS fragments |
SMIL manifests |
[crossdmina.xml]
* 다른 도메인에서의 접근에 대한 제어.
* Domain 또는 Subdomain 의 루트 경로에 위치.
e.g.)
http://www.myserver.com/crossdomain.xml
http://videos.myserver.com/crossdomain.xml
1) 모든 도메인에 대해 허용하는 crossdomain.xml
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
2) 제한된 접근을 허용하는 crossdomain.xml
- domain1.com 에 해당하는 모든 서브 도메인과 domain2.com 중에 www 서브 도메인만 접근 허용함.
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*.domain1.com"/>
<allow-access-from domain="www.domain2.com"/>
</cross-domain-policy>
* 도메인 접근 제한 외에 좀 더 세밀한 접근 정책 설정 가능 : 특정 포트 제한, HTTP Header 제한 가능.
Adobe Crossdomain Security Mechanism & Futher finegrain access :
2-2. Crossdomain in Javascript
* Flash의 Crossdomain 제어 매커니즘과 유사.
* 다음 파일에 대해 접근 권한을 제어함.
RSS feeds |
XML skins |
VTT |
SRT & DFXP files |
* 추가적인 HTTP Response Header (CORS header)를 통해 파일마다 크로스도메인 접근을 제어하는 방식.
* 부수적으로 protocols, ports 등 제한 가능.
1) 모든 도메인 접근에 대한 허용.
2) 제한된 접근 허용
* Server side Code (서버 코드 JAVA)
String origin = request.getHeader(REQUEST_HEADER_ORIGIN);
if (origin != null && !origin.isEmpty())
{
// 요청한 도메인에 대해 CORS 허용. (필요한 제한을 추가하면 됨)
response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN, origin);
}
참고) Cloud-hosted Player & Crossdomain Restrictions
* JW Player 의 Cloud-hosted 버전을 사용할 경우, JW Player CDN 에 접근해야 하므로, 서비스 사이트에서 JW Player의 CDN에 대한 크로스 도메인 제한 관련 처리 필요!
* 아래의 코드를 추가하여 *.jwpcdn.com 의 접근을 허용해야 함.
출처: http://ooz.co.kr/161?category=818548 [이러쿵저러쿵]