【问题标题】:Other websites can't upload images from my site when I am using redirects当我使用重定向时,其他网站无法从我的网站上传图片
【发布时间】:2011-10-25 21:06:29
【问题描述】:

我有一个网站,上面有这样的网址:

http://mysite.com/image1.jpg

我的服务器使用 php 重定向到包含实际文件的子域,如下所示:

header('Location: http://images.mysite.com/image1.jpg');

这几乎适用于所有用途,例如在 img 标签中或在本地保存文件时。对于这些目的,这两个 url 基本上是等效的。但是,当我访问带有图片上传器(如 tumblr 或 imgur)的网站时,我尝试上传第一个 url,但失败(显示“上传照片时出错”或“不支持图片格式,或图片已损坏。”) .

有没有办法让这个工作?我尝试发送不同的状态标题,但它们没有帮助。

编辑:

按照建议,我可以通过 htaccess 重定向或打开文件并发送内容来完成此操作。这可以正常工作,除非我不希望当用户将文件用于其他目的时发生这种情况,例如将其嵌入到 img 标签中。这是因为我的 images.mysite.com 域是一个用于托管我的图像内容的 cdn,如果我必须从我的 Web 服务器中保留内容,它就会破坏它的目的。而且 htaccess 不可行,因为我想在请求第一个 url 时运行一些 php 脚本。

如果我能以某种方式检测到它何时通过文件上传器被使用,那么我可以单独处理其他情况。但我认为我无法检测到这一点,不是吗?

编辑 2(解决方案):

好的,我做了一个巧妙的妥协:事实证明,上传请求通常在标头中没有“accept_charset”参数,而嵌入请求有。使用它,我可以检测何时请求上传图像,然后下载该图像并发送内容。不是一个坚如磐石的解决方案,但它工作得很好。谢谢大家!

【问题讨论】:

  • 它们对于最终用户来说可能是等价的,但图片上传者需要的是文件,而不是重定向。

标签: php image redirect upload http-headers


【解决方案1】:

您的图片上传网站似乎没有遵循您所做的重定向。因此,要使其正常工作,您应该打开远程文件并发送其内容,而不是重定向。

【讨论】:

  • 我对此不是 100%,但 .htaccess 重写可能不可用吗?
  • 是的,url 重写应该做的工作。事实上,它不会向客户端发送任何标头重定向。
  • htaccess 会工作,但我想在重定向期间做一些 php 的东西(比如日志记录和其他东西)。
  • .htaccess 将像他想做的那样执行完全相同的标头重定向,除了结果代码。
【解决方案2】:

您无法完成这项工作,因为图像上传服务需要一个实际的图像文件,它们不遵循任何重定向。

【讨论】:

    【解决方案3】:

    您不应将标准结果代码 (200 - OK) 与标头重定向一起使用。

    看看this tutorial about how to send result codes

    【讨论】:

      【解决方案4】:

      正如其他发帖者所说,图片上传服务会读取您的 url 返回的数据

      http://mysite.com/image1.jpg
      

      作为图像文件 - 这就是重定向混淆这些服务的原因。

      为什么不使用从外部源读取图像,然后打印出二进制数据的 PHP 脚本,而不是重定向?您可以使用 .htaccess 文件来完成此操作,该文件在请求中查找任何带有“.jpg”的内容。

      【讨论】:

      • 这会起作用,但它会为每个请求(不仅仅是文件上传)执行此操作,这会破坏将其托管在子域(即 CDN)上的目的。如果我只能在文件上传时发生这种情况,那就太好了,但是很多人也会将图像嵌入到 img 标签中,而且我不想每次都将所有图像从我的 cdn 重新下载到我的服务器时间。
      • 在这种情况下,您可以执行以下操作:mysite.com/upload/image1.jpg 将输出数据,mysite.com/image1.jpg 将执行重定向。
      猜你喜欢
      • 2014-03-14
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 2017-04-30
      相关资源
      最近更新 更多