检测ajax对普通请求节点js的请求

detect ajax request to normal request node js

本文关键字:请求 节点 js ajax 检测      更新时间:2023-09-26

hello h有下一段代码,我想知道如何在ajax请求和普通请求之间进行检测?没有明示。

var http = require('http');
var fs = require('fs');
var path = require('path');
var url = require('url');
http.createServer(function (request, response) {
    console.log('request starting...');
console.log("request.url = " + request.url);
console.log("url = "+ url);
response.setHeader('content-Type','application/json');
var filePath = '.' + request.url;
if (filePath == './')
    filePath = './index.html';
var extname = path.extname(filePath);
var contentType = 'text/html';
switch (extname) 
{
    case '.js':
        contentType = 'text/javascript';
        break;
    case '.css':
        contentType = 'text/css';
        break;
}

fs.exists(filePath, function(exists) {
    if (exists) 
    {
        fs.readFile(filePath, function(error, content) {
            if (error) 
            {
                response.writeHead(500);
                response.end();
            }
            else 
            {         
                console.log("contentType = "+contentType);
                response.writeHead(200, { 'content-Type': contentType });
                response.end(content, 'utf-8');
            }
        });
    }
    else 
    {
        response.writeHead(404);
        response.end();
    }
});
}).listen(8081);
console.log('Server running at http://localhost:8081/');

在客户端,我发送了一个ajax请求,但我从浏览器请求请求到.

您可以检查request.headers是否包含HTTP_X_REQUESTED_WITH

如果HTTP_X_REQUESTED_WITH的值为XMLHttpRequest,那么它就是一个ajax请求。

示例:

if (request.headers["x-requested-with"] == 'XMLHttpRequest') {
    //is ajax request
}

我遇到了这个问题,我知道它很旧,但以防有人需要答案和背后的想法。

通常,在客户端,当您发出AJAX请求时,您会添加一个描述内容的键和值,即:"content-type":"application/json"

因此,简单地说,在服务器端,您可以测试头,如果它包含application/json作为内容类型,那么您可以放心地说它是一个ajax请求。

req.headers['content-type'] == 'application/json'