【发布时间】:2017-08-29 10:07:33
【问题描述】:
我有一个问题。最近我从我的流媒体服务器获得了可以在我的网站上播放的链接。我的流媒体服务器使用 http 链接,但我的网站使用 https ssl。在我获取播放链接期间,它无法通过显示以下错误从我的流媒体服务器获取内容:
我期待很快收到大家的来信。
提前致谢。
最好的问候,
盛虹
【问题讨论】:
标签: codeigniter http https wowza clappr
我有一个问题。最近我从我的流媒体服务器获得了可以在我的网站上播放的链接。我的流媒体服务器使用 http 链接,但我的网站使用 https ssl。在我获取播放链接期间,它无法通过显示以下错误从我的流媒体服务器获取内容:
我期待很快收到大家的来信。
提前致谢。
最好的问候,
盛虹
【问题讨论】:
标签: codeigniter http https wowza clappr
发生此错误是因为出于安全考虑,您无法从 HTTPS 页面访问 HTTP 资源。这是浏览器的行为。
为了解决这个问题,可以在服务器端建立一个代理端点,例如/proxy/playlist.m3u8,它接受HTTP GET请求。浏览器将从https://<your-server>/proxy/playlist.m3u8 获取资源,就好像它存储在您的主机中一样。因为是 HTTPS 请求,所以没有错误。
在服务器端,当GET 对/proxy/playlist.m3u8 的请求被监听时,HTTP 请求将被代理到您的流媒体服务器(向流媒体服务器发送GET 请求,其中包含所有标头、参数和正文)。当接收到来自流服务器的响应时,响应将直接返回给浏览器,其中包含所有响应头和数据。
由于对流服务器的 HTTP 请求发生在您的服务器端,因此来自浏览器的限制逻辑不再适用。
例如,如果服务器是用 Node.js 编写的,带有 Express 和 request 模块,代理端点将如下所示:
app.get('/proxy/playlist.m3u8', function(req, res) {
req.pipe(request('http://<streaming-server>/path/playlist.m3u8')).pipe(res);
});
【讨论】: