diff --git a/src/output/output_hls.cpp b/src/output/output_hls.cpp index 7f2efe32..04105847 100644 --- a/src/output/output_hls.cpp +++ b/src/output/output_hls.cpp @@ -151,6 +151,17 @@ namespace Mist { return; } //crossdomain.xml + if (H.method == "OPTIONS"){ + H.Clean(); + H.SetHeader("Content-Type", "application/octet-stream"); + H.SetHeader("Cache-Control", "no-cache"); + H.setCORSHeaders(); + H.SetBody(""); + H.SendResponse("200", "OK", myConn); + H.Clean(); + return; + } + if (H.url.find("hls") == std::string::npos){ myConn.close(); return; diff --git a/src/output/output_hss.cpp b/src/output/output_hss.cpp index 76036eb3..3cb91656 100644 --- a/src/output/output_hss.cpp +++ b/src/output/output_hss.cpp @@ -281,6 +281,7 @@ namespace Mist { H.Clean(); H.SetHeader("Content-Type", "video/mp4"); + H.setCORSHeaders(); H.StartResponse(H, myConn); H.Chunkify(moof_box.asBox(), moof_box.boxedSize(), myConn); int size = htonl(keySize + 8); @@ -437,12 +438,23 @@ namespace Mist { void OutHSS::onHTTP() { + if (H.method == "OPTIONS"){ + H.Clean(); + H.SetHeader("Content-Type", "application/octet-stream"); + H.SetHeader("Cache-Control", "no-cache"); + H.setCORSHeaders(); + H.SetBody(""); + H.SendResponse("200", "OK", myConn); + H.Clean(); + return; + } initialize(); if (H.url.find("Manifest") != std::string::npos) { //Manifest, direct reply H.Clean(); H.SetHeader("Content-Type", "text/xml"); H.SetHeader("Cache-Control", "no-cache"); + H.setCORSHeaders(); std::string manifest = smoothIndex(); H.SetBody(manifest); H.SendResponse("200", "OK", myConn);