gpt4 book ai didi

javascript - Nodejs/Expressjs JavaScript : get where request came from

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:36 25 4
gpt4 key购买 nike

我使用nodejs和expressjs模块来创建一个网络服务器。我当前的设置是这样的

var express = require("C:/Program Files/nodejs/node_modules/express")
var app = express();
var server = require('http').createServer(app).listen(80);
var io = require('C:/Program Files/nodejs/node_modules/socket.io').listen(server, {log:false});
var path = require("path");
fs = require("fs");

有没有办法使用

app.use(function(req,res,next){
//code
})

获取请求来自哪里?例如,如果在 html 页面上,您有 script 标签

<script src="test.js"></script>

它发送了一个检索 test.js 的请求,我可以使用 req 参数来查看对 test.js 的请求来自 html 页面并获取 html 页面的完整文件路径吗?

编辑:我正在尝试编写一个提供正确索引文件(index.html/.htm/.php 等)的函数,如果您只是在 url 中输入一个目录(“localhost/tests/chat/”),但问题是,当它从索引页请求 javascript 文件时,它会返回 1 个目录太远(搜索“localhost/tests/test.js”而不是“localhost/tests/chat/test.js”) ,并且仅当您直接在 url 中输入文件名(“localhost/tests/chat/index.html”)时才有效。我的功能:

app.use(function(req,res,next){
var getFullPath = path.join("public",req.path);
console.log(req.path);
if (fs.existsSync(getFullPath)) {
if (fs.statSync(getFullPath).isDirectory()) {
getFullPath = path.join(getFullPath,"index.html");
}
res.sendfile(getFullPath);
} else {
res.send("404 Not Found");
}
});

我知道你可以使用

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

但这给我的自定义 php 解析器模块带来了一个问题,所以这并不是一个真正的选择

最佳答案

我能够使用 req.headers.referer 来获取 javascript 文件的请求位置,从而指向 javascript 文件的正确位置。

getFullPath = path.join("public",req.headers.referer.split(req.host)[1],path.basename(req.path));

关于javascript - Nodejs/Expressjs JavaScript : get where request came from,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com