Javascript Chrome HTML5<;视频>;请求-未发送Cookie
我正在开发HTML5视频播放器,它可以播放来自需要身份验证的服务器的视频流。身份验证是使用PHP完成的。通常,代码如下所示:Javascript Chrome HTML5<;视频>;请求-未发送Cookie,javascript,html,google-chrome,cookies,html5-video,Javascript,Html,Google Chrome,Cookies,Html5 Video,我正在开发HTML5视频播放器,它可以播放来自需要身份验证的服务器的视频流。身份验证是使用PHP完成的。通常,代码如下所示: <!-- http://localhost/video.php --> <video preload="none" crossorigin="anonymous"> <source type="video/mp4" src="http://localhost/video_proxy.php"> </video> 因此,
<!-- http://localhost/video.php -->
<video preload="none" crossorigin="anonymous">
<source type="video/mp4" src="http://localhost/video_proxy.php">
</video>
因此,在访问/video.php之前,用户必须登录。登录信息“存储”在PHPSESSID cookies中
问题是当向http://localhost/video_proxy.php
Chrome不会随该请求发送任何cookie。结果是http://localhost/video_proxy.php
重定向到/login
,当然不会播放任何内容
我找不到amy的文档或对这种行为的描述,所以我很好奇如何让Chrome发送带有视频请求的cookies
PS:我已经检查了Firefox和IE中的相同脚本,浏览器的行为正常-发送cookies,一切正常
PPS:我还尝试禁用所有Chrome扩展,将设置重置为默认值。我已经在几个同事的电脑上试过了-同样的行为。跨域属性根据- “匿名”关键字意味着不会通过cookies、客户端SSL证书或HTTP身份验证交换用户凭据 我认为对于同一个域,crossdomain属性将被忽略,这在Firefox和IE中似乎是如此
然而,基于您声明您的页面和视频URL是同一个域的事实,Chrome在使用
跨域
属性方面似乎与Firefox和IE有不同的想法。视频是否与页面本身位于同一来源?请求发送到同一服务器。HTTP文件是“”,视频文件是“”,您是否尝试过不使用crossorigin
属性(我承认我在猜测)我的猜测是基于-“匿名”关键字表示将不会通过cookie、客户端SSL证书或HTTP身份验证交换用户凭据是的,就是这样。谢谢现在我对crossorigin
属性的用途有点困惑。我使用它来启用CORS使用。如果未将其设置为匿名
,其他浏览器将无法开始播放来自其他域的视频。同样令人困惑的是,在其他浏览器中,它会发送cookies。我使用同一个页面来显示来自其他域以及基于某些标准来自同一域的视频。这就是为什么有一个crossorigin
属性。我通过代理视频解决了以下问题。现在我只为适当的视频设置了crossorigin
属性,它工作正常。因此video\u proxy.php
可以从本地或其他地方获取视频(取决于您所说的一些标准),就浏览器而言,视频来自同一个域,因此根本不需要crossorigin
attributeNo。在基于是否为IE的
标记中,我将视频或代理脚本的直接链接放在加载页面的同一服务器上。因此,作为一个附加步骤,我要么添加要么不添加crossorigin
属性。