检测ajax对普通请求节点js的请求
detect ajax request to normal request node js
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'
相关文章:
- 正在销毁节点中的请求
- 如何发送作为节点请求响应函数中的代码块的响应
- 将curl转换为节点请求
- 只需添加一个'允许跨来源请求'到我的节点应用程序工作
- 节点:通过请求下载zip,zip已损坏
- 节点.js接受 POST 请求的服务器
- 带有节点.js的 curl 请求
- 跨节点服务器上的多个 API 请求维护数据
- 节点.js请求库的相对 URI
- 节点 js 将变量传递到请求回调函数中
- 使用节点请求模块的 UTF8 字符编码
- 同步数据库请求节点JS ORM
- 请求节点模块变量范围
- 如何使用 sinon.stub 编写单元测试以“请求”节点模块
- 请求节点.js后浏览器显示错误
- 连续Post请求节点JS
- 如何使用ajax请求节点js来处理js
- 如何在http传递数组.请求节点
- 检测ajax对普通请求节点js的请求
- 请求节点模块不给html