首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从当前URL查找子域ASP-Classic

如何从当前URL查找子域ASP-Classic
EN

Stack Overflow用户
提问于 2016-08-03 13:51:40
回答 2查看 824关注 0票数 0

我试图写小脚本,单个脚本源与不同的数据库通信,但那里的数据库名称从子域名获得。目前我做了下面的测试,有问题,不能自己解决。问题是,当一个用户在其浏览器中打开多个子域标签时,在90秒或2分钟内,第一个请求的响应将与另一个请求的响应相同。

例如URL:

http://user1.domains.com/subdomaintest.asp

https://user1.domains.com/subdomaintest.asp

http://user2.domains.com/subdomaintest.asp

http://user3.domains.com/subdomaintest.asp

http://user4.domains.com/subdomaintest.asp

http://user5.domains.com/subdomaintest.asp

首先,我打开http://user1.domains.com/subdomaintest.asp,然后打开http://user2.domains.com/subdomaintest.asp,我得到了相同的响应h1text(user1),这是意想不到的。它必须作为user2响应h1text。假设我在2分钟后打开第二个url,然后响应user2,这是ok。GUID也是一样的,看起来和响应是一样的。

我想要的是,响应必须始终在任何时候依赖子域名,而不是在2分钟后。如果这是IIS问题,它是什么?我可以在哪里更改它?另外,如何在浏览器选项卡和/或会话中实现GUID?

代码如下:

代码语言:javascript
复制
'ServerName = Request.ServerVariables("HTTP_HOST")
ServerName = Request.ServerVariables("SERVER_NAME")
arrSplitted = Split(ServerName, ".")
SubDomain = arrSplitted(0)
'response.write(SubDomain)
response.write "<h1>" & SubDomain & "</h1>"
Response.Write "<h1>"& CreateGuid() &"</h1>"
Function CreateGuid()
    CreateGuid = Mid(CreateObject("Scriptlet.TypeLib").Guid,2,36)
End Function

我对HTTP头做了大量的阅读,找出了Request.ServerVariables("SERVER_NAME")和Request.ServerVariables("HTTP_HOST")的区别。

代码语言:javascript
复制
response.write Request.ServerVariables("SERVER_NAME")
response.write Request.ServerVariables("HTTP_HOST")

但这对我没什么帮助。我也试过回复cookie,但都是一样的。看起来IIS并不关心我从不同的子域请求2分钟。为什么会这样呢?

关于服务器: IIS10,会话状态为假(我没有使用),64位。相关的任何信息,你可以问我。

任何人帮助我,非常感谢提前!请帮帮我!

EN

回答 2

Stack Overflow用户

发布于 2016-08-03 16:01:34

我想你几乎所有的事都做对了

但是,我想你弄乱了位置。只需勾选一级子域,子域索引为UBound(X) - 1

代码语言:javascript
复制
<%
  Dim LServerName, LNames, LCycle
  LServerName = Request.ServerVariables("SERVER_NAME")

  Response.Write "<br>Full server name: " & LServerName

  If LServerName <> "" Then
    LNames = Split(LServerName, ".")

    For LCycle = LBound(LNames) To UBound(LNames)
      Response.Write "<br>Level #" & LCycle & ": " & LNames(LCycle)
    Next

    Response.Write "<br>UBound: " & UBound(LNames)

    If UBound(LNames) > 0 Then
      Response.Write "<br>Top level domain is: " & LNames(UBound(LNames))
      Response.Write "<br>1st level subdomain is: " & LNames(UBound(LNames) - 1)
    End If 

    If UBound(LNames) > 2 Then
      Response.Write "<br>2nd level subdomain is: " & LNames(UBound(LNames) - 2)
      Response.Write "<br>3rd level subdomain is: " & LNames(UBound(LNames) - 3)
    End If
  End If
%>
票数 2
EN

Stack Overflow用户

发布于 2016-08-05 16:34:19

问题是我自己发现的。

网络服务器是iis 10,它支持通配符投标,我已经使用了许多80和443出价的网站,包括通配符子域名和现场网站。所有的都在一个文件夹中,网站有一个应用程序池和一些其他配置。

问题出在会话上。

我读了这么多文章,寻找解决方案,但都没有奏效。然后我确定这是会话问题,并尝试使用不同的网站进行测试。是的,为测试创建了不同的应用程序池和网站。经过测试,一切正常。

问题出在会话中,而不是代码中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38735410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档