【问题标题】:Get domain from within linked script CFM file从链接脚本 CFM 文件中获取域
【发布时间】:2014-07-18 20:47:19
【问题描述】:

我正在尝试开发一个可以用 2 行代码部署的 1 页小应用程序。

<div id="app_wrapper"></div> 
<script src="http://mydomain.com/js/loader.cfm?id=12"></script>

这将在不同的域上,我们称之为http://theirdomain.com/client.html

然后在加载程序文件中,我检查域是否与设置中的域相同,因此非付费用户不能只复制这两行并在他们的站点上运行此迷你应用程序而不付费.

<cfset refererDomain = reReplace(CGI.SERVER_NAME,"^\w+://([^\/:]+)[\w\W]*$","\1","one") />
<cfif (refererDomain neq "") and (refererDomain eq GetWBSettings.vchrDomain1 or refererDomain eq GetWBSettings.vchrDomain2 or refererDomain eq GetWBSettings.vchrDomain3 or 
refererDomain eq GetWBSettings.vchrDomain4 or refererDomain eq GetWBSettings.vchrDomain5) and GetWBSettings.blnActive eq 1>

GetWBSettings.vchrDomain1、2、3、4 和 5 是授权域(每个帐户最多允许 5 个域),GetWBSettings.blnActive 是客户端是否处于活动状态的布尔值。

我遇到了一个问题,我不知道如何解决它。 CGI.SERVER_NAME 正在输出 http://mydomain.com 而不是 http://theirdomain.com。我也尝试过 CGI.HTTP_REFERRER,但在这种情况下,它输出的是一个空字符串。

我正在考虑的另一件事是,由于我在脚本中,也许我可以通过 javascript 的 location.host 以某种方式获取它并以某种方式将其传递给我的 cfif 语句

我正在使用 Coldfusion 9

【问题讨论】:

    标签: javascript coldfusion


    【解决方案1】:

    &lt;script src="http://mydomain.com/js/loader.cfm?id=12"&gt;&lt;/script&gt;

    CFM 在您的域上运行,因此 CGI.SERVER_NAME 是您自己的服务器。 CGI.HTTP_REFERRER 可以被欺骗,所以无论如何它都不可靠。

    您可以考虑改为向他们提供一个 JavaScript 文件,该文件在他们的网站上运行,该文件向您网站上的 API 发出请求。 API 需要一个身份验证令牌并返回您的 CFM 当前返回的内容。

    你可以用类似的方式实现它:

    https://developers.google.com/api-client-library/javascript/features/authentication#SimpleaccessusingtheAPIkey

    gapi.client.setApiKey(YOUR API KEY);

    然后,您可以在对 API 的请求中包含来自该服务器的数据,这可以帮助您阻止非付费请求使用复制的 API 密钥访问您的 API。

    【讨论】:

      猜你喜欢
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 2012-09-04
      • 1970-01-01
      • 2021-06-06
      • 2015-01-03
      • 1970-01-01
      相关资源
      最近更新 更多