蒙山上的GET请求参数

蒙山上的GET请求参数

问题描述:

我做了生物医学的网站的node.js和我遇到的一个问题静态ressources错误404: 在我app.js(服务器文件),我有这些代码蒙山上的GET请求参数

app.get('/disease/:orphanetID', function(req, res) { 
var orphanetID=req.params.orphanetID; 
res.render('pages/disease.ejs', {activetitle: "views"}); 
}); 

的问题是,在disease.ejs所需的所有静态ressources得到一个错误404

例如,对于这个代码disease.ejs:

<script src="static/js/DOMscripts.js"></script> 

在Chrome CONSO嘞,我看到:

(red cross) GET http://localhost:8080/disease/static/js/DOMscripts.js 

的事情是,我的静态的ressource为http://localhost:8080/static/js/DOMscripts.js,但只是在出现......这不是好网址URL字符串“病”!

和测试一些东西之后,我想通了,此代码工作:

app.get('/disease', function(req, res) { 
//var orphanetID=req.params.orphanetID; 
res.render('pages/disease.ejs', {activetitle: "views"}); 
}); 

所以,如果我没有任何参数,它的工作,但我需要它。

有关信息,我对代码的静态ressources是:

app.use('/static', express.static(__dirname + '/public')); 

我应该怎么做才能有一个参数?

+0

将页面相对URL用于静态资源通常是一个问题,因为它告诉浏览器在向服务器请求页面URL之前将页面URL的路径添加到静态资源URL,这很少是您想要的。设置你的静态资源,使它们都以'/'开头。 – jfriend00

更改脚本路径:

<script src="/static/js/DOMscripts.js"></script> 
+0

泰克斯,它的工作:) – Charles

+0

@ charles完美;)随时给予upvote或勾选绿色复选标记... –

为了解释了很多这里发生了什么,当你不使用///adomain.com/http://adomain.com/开始你的静态资源的URL,然后在浏览器进行相对这些网址到页面的URL。

所以,如果网页网址为:

http://adomain.com/disease/194 

,你必须在页面中的资源被指定为:

static/js/DOMscripts.js 

那么浏览器就会通过请求URL从服务器将页面的路径与资源的相对URL组合起来,以便您得到以下请求:

http://adomain.com/disease/static/js/DOMscripts.js 

但是,你的服务器并不期待这一点。你的服务器要求:

http://adomain.com/static/js/DOMscripts.js 

因此,要解决这个问题,你让你的URL开始与/。这使得它仅相对于页面的域而不是页面的路径,并且浏览器将请求您期望的资源的URL。