我面临着奇怪的问题。我有一个使用 twilio 调用的应用程序。我在上面使用会话变量。我的 J2EE 会话变量在 CF Administrator 中启用。
问题是,当我设置任何会话值时,它也会在打开到另一个系统的浏览器上设置。我检查了他们的 URLTOKEN 在两个浏览器上都保持不变。
我的应用程序.cfc
<cfcomponent output="false" hint="I define the application settings and event handlers.">
<cfset this.name = "applicationName" />
<cfset this.applicationtimeout=createTimespan(0,6,0,0) />
<cfset this.sessionManagement="yes" />
<cfset this.sessionTimeout="#createtimespan(0,1,0,0)#" />
</cfcomponent>
带有表单标签的 Index.cfm
<cfset SESSION.abc=0>
<form id="formID">
<div class="panel-body">
<p><strong>New Client</strong></p>
<div class="well well-sm">
<span id="successMessage"></span>
<input type="text" id="name" class="form-control" name="name" placeholder="Name">
</div>
<div class="row" id="connect-agent-row">
<div class="col-md-12 text-center">
<a href="javascript:void(0)" onclick="$('#formID').submit();" class="btn btn-lg btn-primary">
Connect
</a>
</div>
</div>
</div>
</form>
然后将 ajax 发送到 cfc 的函数。通过从数据库获取来设置它们的值。
这是cfc代码。
<cfcomponent displayname="abcCFC" hint="abcCFC">
<cffunction name="setNewSession" returntype="any" returnformat="plain" access="remote">
<cfargument name="name" type="string" />
<cfset var getResults1 = ''>
<cfquery name="getResults1" datasource="datasourceName">
INSERT INTO tblname(name) VALUES
(<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.name#" />);
Select ident_current('tblname') as ID;
</cfquery>
<cfset var SESSION.abc = #getResults1.ID#>
</cffunction>
</cfcomponent>
这是处理表单提交的 ajax 代码。
$.ajax({
url: "pathtocfc?method=setNewSession",
type: "post",
data: $("form#formID").serialize(),
success: function(d) {
$('#successMessage').html('');
}
});
我创建了一个测试文件并转储了在 ajax 请求后显示正确值的会话。我也只在服务器上面临这个问题有coldfusion 2016。
我还在本地安装了coldfusion2016,并且在firfox上遇到了同样的问题,但是当我在本地设置this.setClientCookies =“false”时。然后这个问题在我的本地得到了解决。但是这种解决方法不适用于服务器。
我需要知道为什么我面临这个问题,他们有什么可以解决这个问题的解决方法吗?