用于重定向到可下载文件的HTTP代码是什么?

时间:2012-01-04 13:49:06

标签: http redirect download http-status-codes

在我的网站上,我有一个下载页面。当用户点击下载按钮时,他们会到达“感谢您下载”页面。 2秒后,此页面将重定向到实际的物理文件。

所以它有点像:

下载页面http://example.com/download

用户点击“下载”http://example.com/download/getit

2秒后,页面重定向到http://example.com/uploads/files/file_to_download_v2.1.zip

目前,当我重定向到可下载文件时,我使用HTTP 301代码(永久移动)。但是,我不认为这是正确的代码,according to the standard

  

已为所请求的资源分配了一个新的永久URI ,以后对此资源的任何引用应该使用返回的URI之一。 [...] 此响应可缓存,除非另有说明。

然而,页面“download / getit”尚未分配新的URI,它只是重定向到不同的资源,但它自己的URI没有改变。此外,不应缓存响应,因为下载的文件可能会在发布新版本时发生更改。

那么在这种情况下什么是正确的HTTP代码?

2 个答案:

答案 0 :(得分:2)

如果您返回HTTP代码,页面会立即重定向 ,无论您使用301(永久移动)还是302(找到)(否则完全适合您的用例)。如果您想在2秒后重定向 ,则需要使用以下方法之一:

  1. Refresh HTTP标头

    Refresh: 2; url=http://example.com/uploads/files/file_to_download_v2.1.zip
    
  2. 页面内容中的HTML meta-equiv相同:

    <meta http-equiv="Refresh" content="2; url=http://example.com/uploads/files/file_to_download_v2.1.zip" />
    
  3. JavaScript,但这可能对所有人都不起作用,所以我会避免这种情况。

答案 1 :(得分:1)

找到HTTP 302

这样,您不会指示资源已移动,只是可以从其他位置检索。