问题标签 [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.
macos - Mod_XSendFile On a Mac
I've installed xsendfile on my mac and it is located in the apache modules. I've attempted to enable it via my htaccess file but I continually get an error. When I try to get a list of modules on my apache server via either terminal or php, it's not listed. Relevant Code/ Server Info listed below:
Server: Apache/2.2.21 (Unix)
Compiled and installed Via: apxs -cia -Wc,"-arch i386 -arch x86_64" -Wl,"-arch i386 -arch x86_64" mod_xsendfile.c
In Httpd.conf: LoadModule xsendfile_module libexec/apache2/mod_xsendfile.so is enabled
htaccess: XSendFile on XSendFilePath /path/to/file/
Error Message: Invalid command 'XSendFile', perhaps misspelled or defined by a module not included in the server configuration
I appreciate any guidance.
David
ruby-on-rails - 如何在 Heroku 上使用 send_file(或 send_data)解决内存泄漏?
我有一个 Rails 3 应用程序需要生成图像并将数据发送到浏览器。
该应用程序必须部署在 Heroku 上。
然而,Heroku 只支持通过 Mongrel 进行流式传输,它保留了内存。然后这会导致 Heroku 变慢,然后在十几个请求后终止线程。
https://devcenter.heroku.com/articles/error-codes#r14-memory-quota-exceeded
我目前正在使用来自 ActionController::DataStreaming 的 send_data 或 send_file
http://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_data
Heroku 不支持 Rack::Sendfile 或 x-sendfile。
https://devcenter.heroku.com/articles/rack-sendfile
“ruby-mongrel-x-sendfile”项目说:“通过 mongrel 流式传输大量数据是一件坏事;会引发严重的内存泄漏”并提供“in-mongrel 解决方案”。但这看起来不是一个好的解决方案。
http://code.google.com/p/ruby-mongrel-x-sendfile/
一个缓慢的解决方案是先将每个文件上传到 Amazon S3。
请问有人有什么想法吗?
php - PHP - 如何确定 X-Sendfile 是否可用并已安装?
基本上,我想将标头 X-Sendfile 发送到浏览器以发送文件,但如果 X-Sendfile 不可用或未安装在服务器上,我不想调用它。我如何在 PHP 中检查这个?或者如果这不可能在 PHP 中检查,那么如何检查它是否安装了 PERIOD?我宁愿在 PHP 中检查 X-Sendfile 的存在,因为这样做对我来说更容易,因为这是一个也将在其他站点和服务器上运行的包的一部分......也许如果我只是使用它带有PHPheader
函数,如果没有安装它会返回一些东西??
多谢你们 :)
php - x_sendfile 不加载
我正在尝试在 Mac OS X 服务器上的 apache Web 服务器中安装 x_sendfile。安装一切似乎都很好,并且 httpd.conf 配置了 "LoadModule xsendfile_module libexec/apache2/mod_xsendfile.so" 和 "XSendFile ON"。
如果我从终端运行“httpd -M” ,我可以在列表中找到“xsendfile_module(共享)”。
但是在 phpinfo() 或 apache_get_modules() 中没有列出 x-sendfile。如果我尝试在我的 php 代码中使用 x-sendfile 来下载任何文件,浏览器只会下载一个 0 kb 的文件。不过,我可以在标头数据中看到 x-sendfile 标头标签。
有什么建议么?
php - 对于连接速度较慢的人来说,下载使用 PHP 提供的大(ish)zip 会损坏
我是新手,所以我会尽力解释我遇到的问题。如果有什么我遗漏或不清楚的地方,我会提前道歉。
我在我的根目录之外向事先经过验证的人提供了一个 81MB 的 zip 文件。我收到了有关下载损坏或无法完成下载的报告。如果我模拟慢速连接,我已经在我的机器上验证了这种情况。
我在运行 Apache-Coyote/1.1 的共享主机上。
我收到网络超时错误。我认为如果下载时间过长,我的主机可能会停止下载,但他们还没有验证任何一种方式。
我以为我可能遇到了内存限制或时间限制,所以我的主机安装了 apache 模块 XSendFile。我在验证后处理下载的文件中的标题是这样设置的:
任何帮助或建议将不胜感激。谢谢!
django - Apache 下 Django 的内容类型问题,带有静态 HTML + CSS 文件?
我正在尝试在 Django 下提供静态文件(HTML + CSS)。(稍后,我将使用密码保护它们)。但是,我得到了错误的内容类型。HTML 文件被下载,而不是显示。
我的网络服务器是 Apache,我在 Webfaction 下运行它。我正在查看 Chromium 18 下的站点。
我正在尝试一种简单的 FileWrapper(从 Django 发送文件)方法,我使用 mimetype 来确定类型,以及 x_modsendfile,我让网络服务器决定。
HTML 文件被下载,而不是显示。
当我通过我的 Apache 网络服务器而不是 Django 提供服务时,内容标题应该是这样的:
观察服务器声称是 nginx。Webfaction 说它为静态服务设置了 Apache,事实上我一直在为 Django 配置一个 Apache 服务器。但是响应说 Nginx (!)
这是来自天真的 FileWrapper 实现的响应,其中我使用 mimetypes 选择 Content-Type:
内容类型是一个 TUPLE。
这是 mod_xsendfile 实现的响应,其中我没有选择 Content-Type:
这是我的代码:
对于 FileWrapper 或 mod_xsendfile 方法,如何获得正确的 Content-Type?
php - Python urllib2 未获得完整响应 (PDF)
我正在尝试通过点击 URL 来下载 PDF。假设我的 URL 如下所示:http: //foo.bar/this/downloads/pdf
如果我直接点击 URL,浏览器会下载 PDF,没有问题。但是,如果我尝试使用urllib2.urlopen
我获取 PDF,我会得到一个不完整的文件。
/tmp/test.pdf 的最后 3 行看起来像这样(在变量中看起来像这样content
):
但我从浏览器下载的实际文件如下所示:
每一个 PDF,无论大小,似乎都在这个最终的数字组合中的某个地方被切断了。
我尝试了以下解决方案,但都不起作用。urllib2
我认为原因与读取数据的方式无关,而是根本没有得到完整的响应这一事实。
可能是一个因素的另一件事(尽管我不确定)是 PDF 发送到浏览器的方式。据我所知,PDF 是使用 PHP x-sendfile 发送的。我只是对为什么部分下载 PDF 感到困惑。
php - xsendfile 不适用于 mod_rewrite
我正在尝试从重写的 URL 发送文件。在 .htaccess 文件中,我有:
在 foo.php 中:
直接浏览到 foo.php 时,我看到了文件的内容,但是当浏览到 /foo 时,我得到 404。
我试图搜索网络,但除了将 foo 重定向到 foo.php 之外找不到任何解决方案
有谁知道问题出在哪里以及如何解决?
ruby-on-rails - 如何使用 cancan 保护 send_file 操作
我似乎无法批准该web_videos_display
操作的授权。我可以通过使用 使其工作,skip_authorize_resource
但是任何用户都可以通过知道:id
. 我需要访问asset
“查看”文件。
感谢您对此进行调查。
assets_controller.rb
路线.rb
显示.html.erb
能力.rb
更新以回应@ryanb 评论
返回
但
在开发模式下它仍然返回
谢谢瑞恩
php - 当与 Symfony Components BinaryFileResponse 类一起使用时,为什么 XSendfile 会发出间歇性的乱码响应?
背景
我的应用程序的部分职责是以受控方式处理对静态资源(CSS、JavaScript、图像)的请求。基于一些应用程序逻辑,它会从选择的不同文件中返回一个,这些文件可能在不同时间在该 URL 上提供给不同的用户。因此,这些是静态文件,但以动态方式交付。
该应用程序基于 Symfony 组件,这些静态文件的服务由BinaryFileResponse
类处理。
引导代码调用该trustXSendfileTypeHeader
方法:
应用程序使用一些基于配置的内部逻辑以及检测和使用apache_get_modules()
来确定可用性。如果XSendfile可用并且配置说要使用它,它会设置X-Sendfile-Type
标题:
问题
当我将配置设置为从不使用 XSendfile 或通过 PHP 内置 Web 服务器运行此程序时,显然不支持 XSendfile,一切都很完美。
当我使用 XSendfile 时,它也可以工作——大多数时候。
每隔一段时间,通常如果我快速连续按 f5 键 3-4 次,“某事”就会冒出来,我得到一个乱码的响应。例如,这应该是一个 JavaScript 文件(从 Firebug 中“Net”下的“Response”选项卡复制):
hxYîãx��HTTP/1.1 200 OK 日期:2013 年 2 月 5 日星期二 14:49:10 GMT 服务器:Apache/2.2.22 (Ubuntu) X-Powered-By:PHP/5.4.6-1ubuntu1.1 缓存控制:公共上次修改时间:星期二,2013 年 1 月 29 日 13:33:23 GMT 接受范围:字节内容传输编码:二进制 ETag:“10426f-9f6-0”变化:接受编码内容编码:gzip 内容长度: 1011 Keep-Alive: timeout=5, max=98 Connection: Keep-Alive Content-Type: application/javascript
������VmoÛ6þ,ÿkÀ²ãIý°~q [Üt] XÑt¶H¤@Rv¼Àÿ}w(YS
ÀØ2yïå¹*¾Á>¯¥¥,è) Æ^Ât¸BaÆ\éjgäjí Î&ð*¸Åí¸tY!³Ç$Óe"jÞ![#,n®®oï®A¨þ¸þù××Þ©¼¼ôÇêÚd¹49mv°ÔrtBÖ^;WÍÓÔg´Y¥´FéôÁR9o°35Îà^º´N=UÐèEµ¢XE¸íÒ%ª°¨Úò7¬KñT¾{;£ÈrTnß³étUè{QÀçÍn·:'üJëQÍÄËZeNjOàyÕÁ:#3wö~4Òét1ù$µ
eN)RD| ¶FTØJ·ß½¥¨¸õGç >9TyÜxzgl-J:) b«9ûAQ½KXÉ!yÐÓ] óÆÎ@W¡?¢vún·7j©ÿ¢ðõÖGEÁy\ºp¤÷cKxf?ï*¼Éç0^ïîÌÇ°ñDQ¸mYJ|4t¾ñæËۯŠ¨6:çøp(}þÑò|LÂ;Õ(#v¹* /[¨U|xª æ]ÍyìjµòÛ¯p?4sI¥"v÷ôp|uQ4ò4&Ï·$eÒc¸ xo%7Ôi´2ñx;
TuÙj23 áÊ%ħ¿¹lÌwÀS.&ÏØß7¸}ó ZXzå k2'Zdùè �¦ºû-Ù[Ó²ÿU(¯¤¥=pÃjô¾ç]]Øhhô²× ÙãÚÍ4¨[!Õ}'Òþ^Ð�ûxÿ@+ÚVÞ~áÌáy?d aíD¹·U×ÃÚ] õ5íÃø¨o÷ÂAvUÆmÍaày`¦ä©A?mL[-}®(ÿË d°öò¬}Ç¢ ³Çp1À^6%0 hTô^ts´ÞíWô fO¶ö¢ÎNÜæ·HîUôÔ¶±ÌCµsxh.9åçi Û·_ÈÞØ_ÄãY_Ö}G<ì°ý2wÔ¿aw8/þù\ã±þ"0C oÂh'tE¶À¤¥7I½éßRt. s?á^d|k/Æ)wRw÷cG¿<Þ ¼´°/^ø*ʤAVZ×y¿zÅΪ¥[²Õ1ò_Vµæï_YXÁÕö ��YXÁÕö ��
注意响应正文中标头的存在,其余部分显然不是 JavaScript。开头也有一些虚假字符,这可能是导致标题被推到正文的原因。我试图确定此内容是否是 gzip 压缩的结果,但我还不能确认。(另请参阅下面的更新)
问题
首先,BinaryFileResponse
甚至是用于提供文本(非二进制)文件的正确类吗?该类的文档只说“BinaryFileResponse 表示传递文件的 HTTP 响应”。这不是很详细,但它并没有说明它专门用于“二进制”文件。但是这个名字有它自己的含义,为什么 Fabien 不直接调用这个类FileResponse
呢?
其次,更重要的是,这可能是什么原因造成的?我不认为这是浏览器问题,因为它在 Firefox 和 Chrome 中都是可重复的。这是 XSendfile 模块或BinaryFileResponse
类中的错误吗?(我可能认为它不是前者,因为我之前以更“原始”的方式使用它,而不是通过 Symfony 组件,没有这样的问题)。
有没有其他人经历过这个?知道我应该从哪里开始寻找追踪吗?我已经查看了BinaryResponseFile
源代码,但它对 XSendfile 的作用并不大,只是设置了相关的标头并阻止了响应正文中的内容,据我所知。
更新
我刚刚注意到关于这些乱码响应的一些事情:
- 根本没有发送实际的标头,即在 Firebug 的“标头”选项卡上,对于乱码响应,它只列出请求标头,甚至不显示响应标头的标题。
- 即使我在 PHP 中的 Response 上设置了一些自定义标头,该标头也根本不会出现在乱码响应中(作为标头或响应正文中),但是对于未损坏的响应,自定义标头会正确显示。