2017-07-10 33 views
0

在node.js中我有供應來自同一服務器頁面的網站。頁面可以使用http get with ajax在同一臺服務器上請求文件。但是有些頁面不允許從某個路徑請求文件。我怎樣才能驗證這在node.js?如何獲取在node.js中生成http ajax GET請求的頁面的url?

而且這應該是一種方式,用戶不能從客戶端破解。 Node.js的需要一種方法來查看該請求是否來自一個頁面來自某個網​​址,如果是這樣,那麼塊,如果它請求鏈接是在指定的文件夾。

感謝

+0

您無法可靠地知道請求來自哪個頁面。您可以查看引薦來源的標題,但這很容易被欺騙。如果用戶進入其中只有某些事情被允許的狀態,那麼你應該使用的用戶認證和服務器端的狀態,以確定哪些網頁指定允許用戶在任何時間訪問。你不應該考慮「提出要求的頁面」。您應該考慮提出請求的經過身份驗證的用戶。 – jfriend00

+0

儘管頁面位於沙盒iframe中。我可以只設置iframe的來源並在node.js中檢查它嗎? – omega

+0

請編輯您的問題,以完整描述您實際詢問的內容。對實際問題的逐步發現使得人們不想花費時間來弄清楚你的問題實際上是什麼。正如我已經說過的那樣,沒有可靠的方法(不能被欺騙)來說明請求來自哪個頁面來源。你可以看看引用標題,但你不能相信它。您需要重新考慮自己在做什麼,以便請求來自經過身份驗證的用戶,並且您可以在服務器上使用該身份驗證信息來決定他們可以訪問的內容。 – jfriend00

回答

1

假設你設置你的服務器,像這樣:

var http = require('http'); 
server = http.createServer(function(req, res) 
{ 
    ... 

您可以通過訪問req.headers.referer

得到 URL然後你要麼需要檢查這使用正則表達式(如果允許的URL匹配模式)或針對可接受值的數組。

UPDATE
接下來,你可以保持有效訪問的網址的陣列中的會話,然後檢查是否在可接受的參照網址實際上是在此列表中(因此沒有必要欺騙)。

+0

推薦人可以在客戶端被黑客入侵 – omega

0

在任何節點的功能,我們能夠獲得請求和響應對象。考慮以下例如:

var express = require('express'); 
var router = express.Router(); 
var app = express(); 

app.get('/', function(request, response){ 
     var urlPath = request.path; 
     response.send("Hello"); 
}); 

app.listen(3000); 
相關問題