【问题标题】:Why aren't canonical redirects working for me in Chrome?为什么规范重定向在 Chrome 中对我不起作用?
【发布时间】:2018-08-22 01:41:32
【问题描述】:

我使用 Hexo 作为我的网站 codefoster.com 的静态站点生成器,并使用别名插件生成重定向,这样我就可以创建像 codefoster.com/slug 这样的短链接。

别名生成以下...

html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Redirecting...</title> <link rel="canonical" href="https://1drv.ms/p/s!AvStLR7eqJbDyaZpnDDMJvbGtLrI5w"> <meta http-equiv="refresh" content="0; url=https://1drv.ms/p/s!AvStLR7eqJbDyaZpnDDMJvbGtLrI5w"> </head> </html>

一个例子是我最近在 VS Code 上做的一个演示。我将别名 /deck/codeyourcode 添加到我的 _config.yml 和 URL codefoster.com/deck/codeyourcode 现在正确生成重定向。

我的问题是重定向在 Edge 中有效,但在 Chrome 中它会触发文件下载。如何让 Chrome 导航到重定向 URL?

--- 添加于 2018 年 3 月 26 日 ---

我还没有完成这项工作,但我已经缩小了范围。我网站上的每个链接都不是application/octet-stream。这只是我重定向的那些(通过我的 Hexo 静态站点生成器的alias extension)到一个驱动器共享。此外,仅当我从 HTTP 重定向到 HTTPS 时。

所以我想我现在的最终问题是如何做一个

所以http://codefoster.com/deck/codeyourcode 重定向到 HTTPS URL 并失败,而 http://codefoster.com/codechat/071 重定向到 HTTP URL 并且它有效。如果您使用curl-v,您会看到HTTP 生成text/html,而HTTPS 生成application/octet-stream

这很可能是设计使然,但除了让 codefoster.com 通过 HTTPS 工作之外,我如何完成我想要做的事情?

--- 更多编辑 ---

我可以将s 从别名中删除,但它仍然失败,所以这不是因为它专门针对 HTTPS 协议,而是它实际上是在查看重定向 URL 并 确定由于某些未知原因,它应该是application/octet-stream

【问题讨论】:

  • 您使用的是什么网络服务器?它没有响应 Content-Type 标头;我很惊讶它可以在 Edge 中使用。
  • @ZebMcCorkle 对我来说,它实际上是用 application/octet-stream 内容类型响应的。将其更改为 text/html 应该可以解决问题。
  • 谢谢,我认为我们在正确的轨道上。我正在使用 Express 提供静态文件,并将它们作为 application/octet-stream 提供。我只需要弄清楚如何改变它。
  • @JeremyFoster 只是好奇,你有没有设法解决这个问题?如果是这样,也许您可​​以回答自己的问题来帮助他人。
  • 我还没有得到这个工作。我在原始问题中添加了更多信息。

标签: html google-chrome http web


【解决方案1】:

终于想通了!

var express = require('express');
var path = require('path')

express()
  .use(express.static(__dirname, {
    setHeaders: (res, requestPath) => {
      let noExtension = !Boolean(path.extname(requestPath));
      if(noExtension) res.setHeader('Content-Type', 'text/html');
    }
  }))

  .listen(process.env.PORT || 3000);

每次处理请求时,它都会查看请求路径的扩展名,如果没有扩展名,则将Content-Type 标头设置为text/html。很有魅力!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2016-09-13
    相关资源
    最近更新 更多