只能通过ajax调用访问.cfm模板?

jyo*_*eph 4 ajax coldfusion jquery

我有一个模板设置,我正在通过jQuery进行ajax调用.我传递了一个名为"method"的URL参数,然后通过每个方法执行<cfswitch>来确定要执行的代码块.

问题是,我不希望在ajax调用之外访问此页面.换句话说,如果有人只是在他们的浏览器中键入URL,我不希望模板运行.

有没有办法做到这一点?我想在.php中有一种方法可以告诉它是什么类型的请求.Coldfusion中是否存在这样的事情?还是有什么建议?

kar*_*m79 8

jQuery X-Requested-With使用值为"XMLHttpRequest" 的标头集注入请求.在coldfusion中,您可以通过转储HTTP请求来查看:

<cfdump var="#getHTTPRequestData()#">
Run Code Online (Sandbox Code Playgroud)

因此,您需要做的就是测试该标头,例如:

<cfset reqData = getHTTPRequestData()>
<cfif structKeyExists(reqData.headers,"X-Requested-With") and reqData.headers["X-Requested-With"] eq "XMLHttpRequest">
    Got an ajax request
<cfelse>
    <!--- do something else, or nothing --->
</cfif>
Run Code Online (Sandbox Code Playgroud)


Hen*_*nry 5

如果你正在使用CF8,"它有一个功能".:)

客户端:使用填充视图的cfajax标签(即cfdiv,cfwindow,cfgrid,cfinput ......)

服务器端:VerifyClient()在.cfm模板上使用

要么:

客户端:用于<cfajaxproxy>构建JS到远程CFC代理

服务器端:使用<cffunction name="remoteMethod" access=remote verifyClient="true">

  • 为Apple商业广告加入+1 (2认同)