asp-classic - Request.ServerVariables("..") 在分配给变量时返回 undefined 但其值可以通过 Response.Write("..") 显示
问题描述
我正在尝试检索用户的 IP 地址并将其分配给一个变量:
var ipAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR") ||
Request.ServerVariables("REMOTE_ADDR") ||
Request.ServerVariables("HTTP_HOST");
Response.Write(Request.ServerVariables("HTTP_HOST") + "<br />\n\n"); // produces "localhost"
Response.Write(Request.ServerVariables("REMOTE_ADDR") + "<br />\n\n"); // produces "::1"
Response.Write(Request.ServerVariables("HTTP_X_FORWARDED_FOR") + "<br />\n\n"); // produces "undefined"
Response.Write("ipAddress = " + typeof ipAddress + " " + ipAddress + "<br />\n\n"); // produces "ipAddress = object undefined"
我正在为经典 ASP 使用 JScript。我不确定此时该做什么。任何人都可以帮忙吗?
谢谢
解决方案
使用 JScript 在 ASP 中的工作与使用 VBScript 的 ASP 有点不同。
由于 JavaScript 中的一切都是对象,因此var ipAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
您将获得对象引用而不是字符串值,因为与大多数其他Request
集合一样,它ServerVariables
是IStringList
对象的集合
因此,要使短路评估按预期工作,您需要使用值,而不是对象引用。
如果有值(键存在),您可以使用返回对象Item
的字符串值的方法IStringList
,否则返回一个在 JScriptEmpty
中评估的值。undefined
var ipAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR").Item ||
Request.ServerVariables("REMOTE_ADDR").Item ||
Request.ServerVariables("HTTP_HOST").Item;
推荐阅读
- jenkins - 如何在 Openshift 中使用 .NET Core 配置 Jenkins?
- javascript - JQuery:隐藏除一个之外的所有图像,从第一个开始并滚动它
- create-react-app - react-scripts 构建冻结在“创建优化构建”
- python-3.x - 为什么我在源代码中看不到下拉菜单的选项?
- sql - 将复杂字符串字段中的多个值转换为可数结构
- c - 缺少堆栈更新
- angular - 如何从 Firebase 电话身份验证模板自定义域中删除链接?
- c# - 与加密的 SQLite db 的连接
- mongodb - 分组和合并对象数组
- r - 按组计算滚动标准偏差