如何使用express区分Node.js中的HTTP Request和XML HTTP Request?

时间:2013-02-23 08:01:51

标签: node.js http express xmlhttprequest

在我的代码中出于某种原因,我想区分普通的HTTP请求和AJAX请求(即XML HTTP请求)。

经过大量搜索后,我尝试使用req.isXMLHttpRequest,但对于这两种类型的请求,都会返回undefined

现在我通过在每个HTTP请求中添加一个标记作为isAjax并使用 true false 值来处理它。

问题:建议的最佳方法是什么?

  1. 使用向每个XML HTTP请求添加标记(isAJAX)( true false

  2. 找出并解决req.isXMLHttpRequest相关问题。

  3. 如果有人告诉我,为什么req.isXMLHttpRequest正在返回undefined,会有很大的帮助?

    高级谢谢

    注意:我正在使用 Node.JS版本0.8.20 Express版本3.1.0

2 个答案:

答案 0 :(得分:3)

你可以试试这个。

req.xhr

如果它是XMLHttpRequest,则返回true或false。

答案 1 :(得分:1)

关注@scartag回答。 如果您控制发送请求的人(例如,它是您的客户端代码),那么您只需设置HTTP标头X-Requested-With: xmlhttprequest或更改正文/网址以标记xhr请求。

如果您无法控制发送请求的人,则不能依赖req.xhr,那么您的选项取决于您的使用案例。例如,如果您只想回复一个适合请求的内容,那么res.format(_)可能比req.xhr更有用(这取决于您的客户,但您可以假设客户赢了'请求他们无法处理的格式。