gpt4 book ai didi

session - Coldfusion session - CF 如何准确识别连接/唯一客户端

转载 作者:行者123 更新时间:2023-12-04 21:24:13 25 4
gpt4 key购买 nike

Coldfusion session - CF 如何准确识别连接/唯一客户端

在对我从 Word VBA 调用的远程 CFC 进行了一些挖掘之后,我发现它们也设置了 session 。这让我开始思考和谷歌搜索(不成功)来解释 CF 如何区分不同的客户。我之前假设它是一个浏览器 cookie 被设置来识别客户端,但后来我通过一个 word 应用程序使用 Web 服务,并且仍然设置 session 变量和 sessionID。

因此,如果我通过浏览器(chrome)加载并登录我的应用程序并点击测试页面,我会得到 jsessionID = 123,如果我启动 firefox 并登录,我会得到预期的不同 jsessionid = 234。如果我使用 Word VBA 将远程 cfc 作为 Web 服务 wsdl 访问,我可以看到 jsessionid=345 返回到 VBA 模块。如果我关闭 Word 并重新打开我的宏(包含对 Web 服务的登录请求),我会得到一个新的 jsessionID=567

那么 CF 正在识别的请求是什么,它是如何持久化客户端的识别的呢?

这是 VBA http 调用中的相同问题

 Sub doHTTP()

Dim MyRequest As Object
Dim Val
httpString = "http://localhost:8888/test.cfm"

Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")

MyRequest.Open "GET", httpString

' Send Request.
MyRequest.Send

MsgBox MyRequest.ResponseText

'now pass in the session urltoken we have just retreived

MyRequest.Open "GET", httpString & "?urltoken=" & MyRequest.ResponseText

' resend a request, this time with the urltoken.
MyRequest.Send

'take a look and see if the session variables are correct
MsgBox MyRequest.ResponseText

End Sub

在 test.cfm 中
<cfif isdefined("URL.urltoken")>
<cfset session.urltoken="#URL.urltoken#">
<cfelse>
<cfset session.username="bob">
</cfif>


<cfoutput>session.urltoken="#session.urltoken#"</cfoutput><br>
<cfoutput>session.username="#session.username#"</cfoutput><br>
<cfoutput>session.sessionID="#session.sessionID#"</cfoutput>

好的,现在可以工作了,有趣的是,我需要记住对于不使用浏览器的 Web 服务或 http 调用,我需要手动在 URL 中传递 sessionID。

最佳答案

绝对是基于浏览器 cookie 维护的 session 。在来自浏览器服务器的第一次请求时分配 token ,这将用于在请求的其余部分建立 session 连接。如果浏览器 cookie 被禁用,那么您可能需要它为每个请求在 URL 中传递 CFID 和 CFTOKEN,并且在 j2ee session 管理的情况下,您可能还需要传递 jsessionId(最好的方法是在每个请求中附加 session.URLToken。)

在 word 宏中,您会得到新的 jsessionId,因为 word 可能没有 cookie 并且无法保持连接,但只需尝试在下一次 Webservice 调用中连接 session.URLToken ,即使在重新打开 word 后,您也会恢复所有 session ,甚至可以尝试复制 session .URLToken 来自 chrome 浏览器请求并将其附加到 firefox 请求中,您将在 Chrome 中获得相同的 session (如果您也尝试从不同的计算机上进行尝试,同样的事情也会起作用)。

所以故事的寓意是 CFID、CFTOKEN、JSessionId(在 J2ee session 管理的情况下)的组合,用于通过 URL 或 Cookie 连接客户端和服务器。

关于session - Coldfusion session - CF 如何准确识别连接/唯一客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com