Symfony Response net :: ERR_CONNECTION_RESET视频文件

时间:2017-10-03 13:29:26

标签: .htaccess symfony google-chrome binaryfiles

在我的IIS计算机(Windows 10)上运行,但不在托管服务器上(Windows 2008R2,IIS 7.5)。

托管服务器:Chrome中没有通过网址直接打开视频。我在控制台net::ERR_CONNECTION_RESET中收到错误。但它在IE中工作。奇怪的是,图片在Chrome中正常运行。

这是因为我实现了一种安全机制:文件调用现在被迫通过Framework路由。路由调用控制器,然后在进行一些安全检查后,将文件返回为BinaryFileResponse

我不得不调整webconfig(linux上的htaccess)。视频文件位于data/content文件夹下。

<rule name="ID:0001 Folder or File exists" enabled="true" stopProcessing="true">
    <match url="^(?!data/content)[a-z].*$" />
    <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" />
    </conditions>
    <action type="None" />
</rule>
<rule name="ID:0002 Datafolder" enabled="true" stopProcessing="true">
    <match url="^data/((?!content).)*$" />
    <action type="None" />
</rule>

我在互联网上搜索,我发现的所有内容都可能是网络,防火墙或缓存问题。但我不认为这是一个问题,因为它因为我回复了Symfony BinaryFileResponse的回复。

$response = new BinaryFileResponse($webPath);
$response->setAutoEtag(true); // Needed for partial loading of video
$response->headers->set('Content-Type', 'video/mp4');
return $response;

网络标题:

General
    Request URL:http://foo.....bar.mp4
    Referrer Policy:no-referrer-when-downgrade
Request Headers
    Provisional headers are shown
    Accept-Encoding:identity;q=1, *;q=0
    chrome-proxy:frfr
    Range:bytes=0-
    Referer:http://foo.....bar.mp4
    User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

1 个答案:

答案 0 :(得分:0)

解决方案是IIS 7.5在响应头中返回更多信息。阅读this