【问题标题】:Best way to dynamically set host server in ColdFusion 10在 ColdFusion 10 中动态设置主机服务器的最佳方法
【发布时间】:2014-06-26 23:54:05
【问题描述】:

我使用以下来动态检测主机服务器。使其动态化的重要性在于,目前有太多的硬编码重定向,例如:

http:s//mysite.com/hr/index.cfm 

在我的应用程序中。 当我从生产站点移动到开发站点再返回生产站点时,我必须手动更改/注释掉这个http/https,这不仅耗时而且很危险。

这是我发现的可以检测主机服务器的代码。然后我执行以下操作:

      <CFSET inet = CreateObject("java", "java.net.InetAddress")>
      <CFSET inet = inet.getLocalHost()>
      <CFSET HostServer = "#inet.getHostName()#">
      <CFSET ThisHostServer = "#LEFT(HostServer,6)#">
      <CFSWITCH expression="#Trim(ThisHostServer)#"><!--- Prod or Dev server --->
         <CFCASE value="myprodsite.com">
           <CFSET UseThisURL = "http://myprodsite.com">
         </CFCASE>
         <CFCASE value="mydevsite.com">
           <CFSET UseThisURL = "http://myDevsite.com">
         </CFCASE>
      </CFSWITCH>

然后在每个存在链接或重定向的页面上,我只需要使用:

      #UseThisURL#/hr/index.cfm

我的问题是:

  1. 在应用程序中设置#UseThisURL# 的最佳方式在哪里? 我在 Linux 环境中使用 ColdFusion 10 和 Application.cfc。

  2. 我应该将其设置为应用程序还是会话范围?

  3. 由于一切都将在应用程序或会话范围内,当用户在某个页面上空闲并且应用程序/会话范围已过期时,当用户单击链接时会产生错误吗?如何防止用户看到使用此技术导致的错误?请指教,谢谢!

【问题讨论】:

  • 如果有帮助,cgi.server_name 应该有域,但更好的问题可能是你为什么要使用它?如果您只是进行重定向,为什么不使用来自 webroot 的相对 URL 或绝对 URL?所以重定向到 /my/new/path 而不是 example.com/my/new/path。这样它就与域无关并且更便携。
  • 只需执行@SeanCoyne 指出的操作,无需额外代码或任何额外配置即可解决问题。无论运行代码的服务器如何,快速、简单、始终有效。

标签: coldfusion coldfusion-10


【解决方案1】:

我使用的最佳实践是创建config.cfc,它可以包含像getServerSpecificVariables() 这样的函数来返回结构。此结构将保存在您的应用程序范围内,因为您不想为每个会话开始创建USEThisURL。当您需要重置时,只需清除您的应用程序范围。在onApplicationStart 中的onApplicationStart 事件中在Application.cfc 中实例化下面的config 组件 示例

Config.cfc:

component{

    public struct function getServerSpeceficVariables(){
       var config = {};
       var inet = CreateObject("java", "java.net.InetAddress");
       inet = inet.getLocalHost();
       HostServer = inet.getHostName();
       ThisHostServer = LEFT(HostServer,6);
       switch(Trim(ThisHostServer)){
           case 'myprodsite.com':{
              config.useThisURL = '';
              break;
           }

          case 'mydevsite.com':{
              config.useThisURL = '';
              break;
           }

         }
         return config;
    }

}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-06-28
  • 2014-02-02
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
相关资源
最近更新 更多