Express作为静态服务的URL路径问题

今天遇到一个问题:

  1. 我使用Express,将两个目录作为静态文件暴露给外部访问:

//product and /home/products are static html, script, jpg files
        app.use(express.static(__dirname + ‘/static’));
        app.use(express.static(process.cwd() + ‘/home/products’));
我的目录结构:
..
|
|_server.js
|
|_static/
| |
| |__product/
|
|_product/
|
|_home/products

  1. 2. 当访问/product这个URL时候,我做了处理,并不是直接访问下面的文件
  2. //product index page
  3. app.get(‘/product’, getIndexSmapleHTML);
  4. 在indexSampleHTML中,我增加了脚本,会去向服务器请求图片,并使用jQuery插入带<img>标签的HTML元素的(img的src是相对另外一个静态目录的地址),发现找不到图片。
  5. 4. 问题是,img src所指的图片找不到。但是我另外一个URL:/pi ,也是同样的img和src,却可以访问。

刚开始我怀疑是我的img src中带中文导致的,但是 /pi 的地址可以访问,那么就不是中文的问题。

我比较两个URL,发现他们不一样:
正常访问的URL:http://localhost/7E%%9C%35/556.jpg
而有问题的URL:http://localhost/product/7E%%9C%35/556.jpg

多了一个product在路径中。

我大概明白了,http://localhost/product 是一个静态目录,那么在这个URL下的请求,都是相对于/product这个根路径的。因为我没有/pi的静态目录,所以没问题了。

所以,Express里面,在使用静态目录的时候,要注意这个特性:静态目录URL下的请求的相对URL,都是相对应于此静态目录的,而不能跳出。

我解决这个问题的方法,就是删除掉/product目录。

本文链接:http://www.yunweipai.com/2783.html

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/53194.html

(0)
上一篇 2021年8月6日
下一篇 2021年8月6日

相关推荐

发表回复

登录后才能评论