Node.js 如何检测AJAX请求和普通请求

Node.js 如何检测AJAX请求和普通请求

AJAX代表异步JavaScript和XML,用于在客户端运行时向服务器发送动态请求。

在Node.js中,有两种技术可以检测AJAX请求:

  1. 检查请求的头部,如果包含 HTTP_X_REQUESTED_WITH 并且其值为 XMLHttpRequest ,则为AJAX请求。
  2. 当您发送一个AJAX请求时,会在请求的头部添加 ‘content type’:’application/json’ 。因此,如果请求包含该头部,则为AJAX请求。
  3. 如果 referer 头部与 host 头部不同,则为AJAX请求。
  4. 如果 sec-fetch-dest 头部的值为 empty ,则为AJAX请求。

对上述最后两种方法的实现:

示例1: 如果referer头部与host头部不同,则为AJAX请求:

  • server.js: 创建一个名为server.js的文件,并粘贴下面的代码:
const http = require('http'); 
const server = http.createServer((req, res) => { 
    if (req.headers.host != req.headers.referer) { 
        console.log("It is the AJAX Request!"); 
    } 
}); 
server.listen(3000);
  • ajax.html: 创建一个HTML文件,并粘贴下面的代码:
<!DOCTYPE html> 
<html> 
  
<head> 
    <title>Page Title</title> 
</head> 
  
<body> 
    <h1 style="color:green">GeeksforGeeks</h1> 
    <h3>How to detect AJAX request to normal request Node.js?</h3> 
</body> 
<script> 
    const xhr = new XMLHttpRequest(); 
    xhr.open("GET", "http://localhost:3000", true); 
    xhr.send(); 
</script> 
  
</html>

在终端中执行以下命令:

node server.js

打开浏览器并使用ajax.html,观察server.js的输出

注意: 该代码监听在3000端口,并在收到AJAX请求时打印一条消息。

输出: 在输出中,我正在执行server.js,然后使用HTTP协议运行ajax.html,并检测AJAX。

Node.js 如何检测AJAX请求和普通请求

示例2: 如果sec-fetch-dest头部等于空,则说明是一个AJAX请求

  • server.js: 创建一个名为server.js的文件,并粘贴下面的代码
const http = require('http'); 
const server = http.createServer((req, res) => { 
    if (req.headers['sec-fetch-dest'] == 'empty') { 
        console.log("It is the AJAX Request!"); 
    } 
}); 
server.listen(3000);
  • ajax.html: 创建一个HTML文件并粘贴下面的代
<!DOCTYPE html> 
<html> 
  
<head> 
    <title>Page Title</title> 
</head> 
  
<body> 
    <h1 style="color:green">GeeksforGeeks</h1> 
    <h3>How to detect AJAX request to normal request Node.js?</h3> 
</body> 
<script> 
    const xhr = new XMLHttpRequest(); 
    xhr.open("GET", "http://localhost:3000", true); 
    xhr.send(); 
</script> 
  
</html>

在终端中执行以下命令:

node server.js

打开浏览器,并观察 server.js 的输出结果

注意: 这段代码监听3000端口,并在收到 AJAX 请求时打印一条消息

输出: 在输出中,我会执行 server.js 然后使用 HTTP 协议运行 ajax.html 并检测 AJAX

Node.js 如何检测AJAX请求和普通请求

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程