看起来很傻,但我无法找到合适的答案; 我正在尝试使用Express js中的params处理get请求:
app.get('/status/:id', function(req, res, next) {
var par = req.params.id;
.
.
.
res.render('profile', {xxx: par});
});
但问题是资源没有加载,我的静态资源出现404错误。
GET /status/stylesheets/style.css 404 31.761 ms - 3296 GET /status/stylesheets/customize.css 404 53.355 ms - 3296 GET /status/javascripts/signup.js 404 91.891 ms - 3296 GET /images/Lizofile-white.png 304 0.564 ms - - GET /images/profile.png 304 0.769 ms - - GET /images/comment.png 304 0.485 ms - - GET /images/achievements.png 304 0.511 ms - - GET /images/score.png 304 0.641 ms - - GET /images/friends.png 304 0.512 ms - - GET /status/stylesheets/style.css 404 24.126 ms - 3296 GET /status/stylesheets/customize.css 404 15.016 ms - 3296 GET /status/javascripts/signup.js 404 16.238 ms - 3296
我可以看到在我的资源开头添加了 / status 目录'路径。 我尝试通过修改 app.use(express.static(path.join(__ dirname,' / public')); 来解决这个问题没有工作。
> var app = express();
>
>
>
>
> app.use(session({ secret: 'osjdh018013bashjdas', resave: false,
> saveUninitialized: true }));
>
>
>
> view engine setup app.set('views', path.join(__dirname, 'views'));
> app.set('view engine', 'jade');
>
>
> app.use(logger('dev')); app.use(bodyParser.json()); //pasrse html,
> jason parser app.use(bodyParser.urlencoded({ extended: true }));
> app.use(cookieParser()); app.use(express.static(path.join(__dirname,
> '/public')));
>
> app.use('/', index);//home app.use('/login', login);
> app.use('/profile', profile);//user app.use('/register',
> register);//user
>
> app.use(function(req, res, next) {
>
> res.header('Access-Control-Allow-Credentials', true);
> res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
> res.header("Access-Control-Allow-Origin", "http://localhost");
> res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
> next(); });
我希望提前发表任何意见。
答案 0 :(得分:1)
听起来你正在使用静态文件的纯粹相对引用。
如果你有这样的事情:
<link href="stylesheets/style.css">
网址为:
的网页内 http://somedomain.com/status/xxx
然后,浏览器会将您对stylesheets/style.css
的请求视为相对于网页的域和路径的请求。因此,它会将http://somedomain.com/status
添加到请求的URL的前面,并询问服务器:
http://somedomain.com/status/stylesheets/style.css
这不是你想要的。相反,如果您使用/
启动它们,则将页面中的资源引用更改为仅相对于域相关而不是路径相对,如下所示:
<link href="/stylesheets/style.css">
然后,只会添加页面域,浏览器会请求:
http://somedomain.com/stylesheets/style.css
应该是您的服务器所期望的。