问题标签 [x-sendfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
905 浏览

apache - mod_xsendfile Firefox resume issue

We are trying to use mod_xsendfile with Apache to efficiently handle large file downloads (> 1 GB). After installation the configuration looks like:

The download script does nothing fancy, just checks for the existence of file to download and sets headers as per documentation, like this:

Uninterrupted downloads work fine with any user agent we've tested with, and HTTP-Range does work fine with all but Firefox (tested versions 27 and 28). Firefox can pause a download, but resuming fails every time.

These are the http headers captured with Live HTTP headers extension:

Initial download:

... and when Firefox tries to resume:

... the server returns a 404

... which obviously causes Firefox to fail resuming the download (which can now only be cancelled and restarted from beginning).

Considering everything works as expected in other browsers and download managers we've tried:

  1. Has anybody experienced similar behavior?
  2. Can anyone explain or point out the potential cause of it in our download script or configuration code?

Edit:

After doing some more testing it turned out that the issue is down to If-Unmodified-Since header being sent by Firefox when resuming the download. Even though this header is correctly set to the value of Last-Modified response header received from Apache, the server does not like it for some reason and responds with 404. After stripping the If-Unmodified-Since header from request by changing the .htaccess:

... resume works fine everywhere including Firefox.

This method of course is not correct if the file to download has been modified in the mean time, but it does the job for us because we use a different convention for serving newer versions of the same file.

This obviously feels more like a hack than a correct implementation, so not being sure if this should be marked as an answer, I'm leaving it as addition to original question.

New questions obviously arise:

  • Is there a better way to overcome this issue?
  • Is this a bug in mod_xsendfile?
0 投票
2 回答
786 浏览

php - PHP 无法使用 X-SendFile 和 jpeg 标头显示图像

出于某种原因,我无法正确显示图像,它抛出错误并没有告诉我出了什么问题,有什么想法吗?

代码

标题

0 投票
0 回答
229 浏览

apache2 - 如何让 mod_xsendfile 猜测要服务的文件的 MIME 类型?

我正在mod_xsendfile使用 Apache 提供静态文件。但是,我找不到让 ApacheContent-type根据它使用 xsendfile 提供的文件的扩展名设置标题的方法。这似乎有点奇怪,因为 Apache 在正常提供静态文件时能够做到这一点。有没有办法让 Apache 在使用 提供文件时做同样的事情mod_xsendfile

0 投票
0 回答
99 浏览

ios - 如何调试在 iPhone 上播放的视频

我正在尝试在 iphone 上使用 php 通过代理播放视频,视频格式为 .mp4,它可以通过代理和直接访问在所有其他设备和浏览器上运行。Iphone 可以直接访问,但不能通过代理(X-SendFile Apache)。

我如何调试以查看 Iphone/Apple/eQuicktime 不喜欢什么,标题看起来都正确。

谢谢你的帮助

0 投票
1 回答
2585 浏览

php - Nginx:X-Accel-Redirect 不适用于具有已知 MIME 扩展名的文件

我正在开发一个 webapp,X-Accel-Redirect 标头仅在没有扩展名的文件中工作正常。出于某种原因,如果我为文件名添加扩展名,则 X-Accel-Redirect 不起作用。

工作示例:

非工作示例:

我正在使用 nginx 1.7.1。

最初,奇怪的部分是,如果我用 mime.types 文件中未注册的内容更改扩展名部分(在本例中为“.zip”),它可以正常工作(显然我相应地重命名了文件),但扩展名指向知道 mime 类型(例如“zip”、“jpg”、“html”)将生成“404 Not found”错误。

更新: 问题似乎是由于我在 conf 文件中的这条规则:

出于某种原因,似乎 nginx 先测试文件系统中文件的存在,然后再尝试“内部/别名”路径。

关于如何让 nginx 过滤来自 X-Accel-Redirect 的所有“/protected_files”直接到“内部”而不是先尝试在其他路径中查找的任何想法?

提前致谢。

0 投票
1 回答
108 浏览

iphone - django,嵌入 url,xsendfile,视频嵌入

我正在用 django 构建一个网络应用程序。该应用程序在 apache 上运行,文件/视频由 xsendfile apache 模块提供。该应用程序在本地网络上的 iphone、ipad 和 mac 上运行良好 - 当我通过https://myapp.local 之类的 URL 访问该站点时

当我通过计算机通过它的真实世界域(https://myapp.com)访问该应用程序时,一切都还可以。但是当在 iPhone/ipad 上时,视频不会被加载。我为提供视频而制作的自定义 url 甚至没有被调用。

我正在嵌入这样的视频:

因此调用 url 来获取该资产并返回带有路径的文件响应。iPhone/iPad 不会调用这个“serveAsset”。当我直接点击该网址时,视频也不会加载。(但它来自 mac 和 safari - 包括使用“Safari iOS7 - iPhone”用户代理。

Safari iOS7 是否不适用于为页面提供材料的 url?

任何想法可能会发生什么?

任何帮助将不胜感激!

干杯

亚当

0 投票
2 回答
3347 浏览

python - XsendFile 与 apache 和 django

我有我的 django 由 apache 使用 Vhost 服务。conf文件如下

我想将媒体文件限制为仅在特定登录用户上提供。所以我遇到了 XsendFile。如果我理解正确,当您让 django 对您要提供的媒体文件进行所有检查时,它的作用是由 Apache 作为静态文件提供。所以如果我猜对了,程序如下

  1. 激活 XsendFile。
  2. 创建检查媒体文件权限等的视图并提供服务
  3. 与 urls.py 文件中的 url 关联

然后我可以使用 ` 并且会像使用初始媒体文件 url 一样正常工作。我理解正确吗?我的问题如下:

关于 1.activating XSendFile。这应该在我的 Vhost 标签内的 conf 文件中完成吗?设置 XsendFile 是否足够?我应该删除媒体指令的别名以及媒体文件的部分吗?我希望媒体文件仅由我的视图提供?

还有什么我应该注意的吗?

编辑:我的设置是

我的网址.py

和我的看法

我的问题是某些媒体文件可以正常共享,而有些则不能正常共享,并出现内部服务器错误

0 投票
1 回答
801 浏览

ruby-on-rails - 使用 send_file 显示 PDF

我正在尝试通过控制器方法显示上传的 pdf 文件

这在本地工作得很好,但是在heroku上我得到了不明确的应用程序错误,没有进一步的堆栈跟踪

我尝试config.action_dispatch.x_sendfile_header = "X-Sendfile"在 config/environments/production.rb 中进行设置,但这会导致应用程序上的所有资产都无法在生产中加载。

我错过了什么?

0 投票
2 回答
398 浏览

image - 使用 X-Send File (Symfony2) 显示图像

我在“app/var/assets”中有一些图像(我必须将这些图像放在该目录中,我无法通过客户端限制来更改它)。

我需要展示这些图像。App 目录不是 Apache 的可访问路径,因此我需要使用 X-Send File。

我该如何使用 X-Send 文件呢?

我在我的控制器中尝试过:

然后在我看来:

但是找不到图片,我得到的图片网址是:

HTTP/1.0 200 OKCache-Control: publicContent-Disposition: inline; 文件名=

任何想法?

0 投票
0 回答
183 浏览

php - Solutions for serving large downloads to prevent interruption from sleep or hibernate?

I'm serving downloads on apache using X-SendFile within PHP. It works great, but the problem I'm anticipating is when users download large >18GB files they may run into issues where their PC's power saving options might interrupt the download. Is there any solution to this besides splitting up the file into pieces and making them download it one by one? Is there download manager software out there I can implement on our server?