2014-02-04 2 views
1

Я использую nodejs с модулем expressjs для создания веб-сервера. Моя текущая настройка этогоNodejs/Expressjs javascript: get where request from from

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 src="test.js"></script> 

, он посылает запрос на получение test.js, я могу использовать REQ аргумент, чтобы увидеть, что запрос на test.js пришел со страницы HTML и получить полный путь к файлу html-страницы?

EDIT: Я пытаюсь написать функцию, которая служит для правильного индексного файла (index.html/.htm/.php и т. Д., Если вы просто вводите каталог в URL-адрес («localhost/tests/chat /») , но тогда проблема заключается в том, что когда он запрашивает файл javascript с индексной страницы, он возвращается слишком далеко назад в один каталог (ищет «localhost/tests/test.js» вместо «localhost/tests/chat/test.js»,), и работает только тогда, когда вы непосредственно ввести имя файла в URL ("локальный/тесты/чат/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 парсера, так что это не вариант

ответ

0

Я был в состоянии использовать req.headers.referer, чтобы получить, где Javascript файла попросили из и, следовательно, указывают на правильное расположение файла javascript.

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