今天遇到一个问题:
- 我使用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
- 2. 当访问/product这个URL时候,我做了处理,并不是直接访问下面的文件
- //product index page
- app.get(‘/product’, getIndexSmapleHTML);
- 在indexSampleHTML中,我增加了脚本,会去向服务器请求图片,并使用jQuery插入带<img>标签的HTML元素的(img的src是相对另外一个静态目录的地址),发现找不到图片。
- 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