Nic*_*tti 59 javascript node.js express
我正在使用express.js,我需要知道发起呼叫的域名.这是简单的代码
app.get(
'/verify_license_key.json',
function( req, res ) {
// do something
Run Code Online (Sandbox Code Playgroud)
我要如何从域req或res对象?我的意思是我需要知道api是否被somesite.com或someothersite.com调用.我试着做两者的console.dir req和res,但我还是不知道从那里,也可以参考文档,但它给了我没有帮助.
Jon*_*ski 100
您必须从HOST标题中检索它.
var host = req.get('host');
Run Code Online (Sandbox Code Playgroud)
它是HTTP 1.0的可选项,但1.1要求.而且,应用程序总是可以强加自己的要求.
如果这是用于支持跨源请求,则应使用Origin标头.
var origin = req.get('origin');
Run Code Online (Sandbox Code Playgroud)
请注意,某些跨源请求需要通过" 预检 "请求进行验证:
req.options('/route', function (req, res) {
var origin = req.get('origin');
// ...
});
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找客户端的IP,您可以使用以下命令检索:
var userIP = req.socket.remoteAddress;
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的服务器位于代理服务器后面,这可能会为您提供代理服务器的IP.是否可以获取用户的IP取决于代理传递的信息.但是,它通常也会在标题中.
Mic*_*iel 22
代替:
var host = req.get('host');
var origin = req.get('origin');
Run Code Online (Sandbox Code Playgroud)
你也可以用:
var host = req.headers.host;
var origin = req.headers.origin;
Run Code Online (Sandbox Code Playgroud)
Die*_*ero 12
在 Express 4.x 中,您可以使用req.hostname,它返回域名,不带端口。IE:
// Host: "example.com:3000"
req.hostname
// => "example.com"
Run Code Online (Sandbox Code Playgroud)
请参阅:http : //expressjs.com/en/4x/api.html#req.hostname
req.get('host')现在已弃用,使用它会给出Undefined.
使用,
req.header('Origin');
req.header('Host');
// this method can be used to access other request headers like, 'Referer', 'User-Agent' etc.
Run Code Online (Sandbox Code Playgroud)
2022年,我使用express v4.17.1得到以下结果
var host = req.get('host'); // 有效,本地主机:3000
var host = req.headers.host; // 有效,本地主机:3000
var host = req.hostname; // 有效,本地主机
var origin = req.get('origin'); // 不起作用,未定义
var origin = req.headers.origin; // 不起作用,未定义
| 归档时间: |
|
| 查看次数: |
71297 次 |
| 最近记录: |