Express Static无法找到以#标签

时间:2018-06-15 05:53:48

标签: node.js express static

static找不到以#开头的文件 我知道dotfiles选项,但是将其设置为true并不能解决问题。

是否有hashtagfiles或类似选项或其他解决方案?

以下是我收到的错误消息:

请求:http://localhost:17863/z7gfYLhXn3zDg5QQ/admiralmarkets-live/#AAPL60.gz

Error: Resource not found
at catchPageNotFound (D:\BitBucket\EA Studio\index.js:95:17)
at Layer.handle [as handle_request] (D:\BitBucket\EA Studio\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (D:\BitBucket\EA Studio\node_modules\express\lib\router\index.js:317:13)
at D:\BitBucket\EA Studio\node_modules\express\lib\router\index.js:284:7
at Function.process_params (D:\BitBucket\EA Studio\node_modules\express\lib\router\index.js:335:12)
at next (D:\BitBucket\EA Studio\node_modules\express\lib\router\index.js:275:10)
at D:\BitBucket\EA Studio\node_modules\express\lib\router\index.js:635:15
at next (D:\BitBucket\EA Studio\node_modules\express\lib\router\index.js:260:14)
at Function.handle (D:\BitBucket\EA Studio\node_modules\express\lib\router\index.js:174:3)
at router (D:\BitBucket\EA Studio\node_modules\express\lib\router\index.js:47:12)

我的代码是:

app.use(express.static(path.join(__dirname, "public/data"), {setHeaders: setGzipHeaders, dotfiles: "allow"}));

如果我将文件重命名为_AAPL60.gz,则请求有效。

1 个答案:

答案 0 :(得分:1)

  

static找不到以#

开头的文件

主题标签在URL中用作客户端片段标识符,并且不会被broswer发送到服务器。因此,问题不在于express.static()没有找到它,而是该浏览器根本没有将#AAPL60.gz发送到服务器。

如果您希望将其发送到服务器,则需要使用%23正确编码,如:

http://localhost:17863/z7gfYLhXn3zDg5QQ/admiralmarkets-live/%23AAPL60.gz

尽管所有人都可以使用其中的字符,但在网址中允许将其作为常规字符(例如-_或其他一些允许的字母数字字符)。 p>