Coldfusion onCFCRequest 将 XML 的返回类型更改为 WDDX

2024-04-12

我的客户群终于不再使用 Coldfusion 8,所以现在我可以利用 Coldfusion 9Application.cfc -> onCFCRequest事件。我有一个测试场景设置,但结果不是我所期望的。我有一个我调用的方法,它会产生一个有效的XML像这样回应...

Response Header: Content-Type:application/xml;charset=UTF-8
Response:
<?xml version="1.0" encoding="UTF-8"?>
<rows><row id="10000282742505"><cell/><cell> ...

现在我介绍完之后onCFCRequest事件我得到这个回来(这打破了我的网格)......

Response Header: Content-Type:application/xml;charset=UTF-8
Response:
<wddxPacket version='1.0'><header/><data><string>&lt;rows&gt;&lt;row id="10000282742505"&gt;&lt;cell&gt;&lt;/cell&gt;&lt;cell&gt; ...

这是事件...

<cffunction name="onCFCRequest" access="public" returntype="Any" output="true">
    <cfargument type="string" name="cfc" required="true">
    <cfargument type="string" name="method" required="true">
    <cfargument type="struct" name="args" required="true">

    <cfscript>
        // OnCFCRequest security hole fix as detailed here: http://blog.adamcameron.me/2013/04/its-easy-to-create-security-hole-in.html
        var o = createObject(ARGUMENTS.cfc);
        var metadata = getMetadata(o[ARGUMENTS.method]);

        if (structKeyExists(metadata, "access") && metadata.access == "remote"){
            return invoke(o, ARGUMENTS.method, ARGUMENTS.args);
        }else{
            throw(type="InvalidMethodException", message="Invalid method called", detail="The method #method# does not exists or is inaccessible remotely");
        }
    </cfscript>
    <cfreturn />
</cffunction>

如何让 onCFCRequest 以与远程函数返回相同的格式传递响应?

我知道这篇文章:http://www.bennadel.com/blog/1647-Learning-ColdFusion-9-Application-cfc-OnCFCRequest-Event-Handler-For-CFC-Requests.htm http://www.bennadel.com/blog/1647-Learning-ColdFusion-9-Application-cfc-OnCFCRequest-Event-Handler-For-CFC-Requests.htm

我可能最终会尝试这样做,但首先我想弄清楚为什么我不能简单地以相同的格式传递响应。


我从来没有用过onCfcRequest但你是对的,这有点愚蠢。

似乎onCfcRequest也会“吞噬”returnFormat,因此您必须实现自己的returnFormat检测并序列化为正确的格式。

OnCFCRequest() 方法的 ReturnType 应该是 VOID,就像 它的 OnRequest() 对应部分。从该方法返回一个值 似乎对页面中实际返回的内容没有任何影响 回复。要返回一个值,您必须在 方法主体,或通过 CFContent 将其流回

引用自:http://www.bennadel.com/blog/1647-Learning-ColdFusion-9-Application-cfc-OnCFCRequest-Event-Handler-For-CFC-Requests.htm http://www.bennadel.com/blog/1647-Learning-ColdFusion-9-Application-cfc-OnCFCRequest-Event-Handler-For-CFC-Requests.htm

E.g.

...
var result = invoke(o, ARGUMENTS.method, ARGUMENTS.args);
...
<!--- after your </cfscript> --->

<!--- TODO: do some checking to determine the preferred return type --->

<!--- if detected as xml, serve as xml (safer option) --->
<cfcontent type="application/xml" 
           variable="#toBinay(toBase64(local.result))#">

<!--- *OR* (cleaner version) watch out for white spaces --->
<cfcontent type="application/xml">
<cfoutput>#result#</cfoutput>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Coldfusion onCFCRequest 将 XML 的返回类型更改为 WDDX 的相关文章

随机推荐

  • XML 中 setTag(key, value) 的等效项

    我可以使用等价的setTag key 在我的 Android 布局文件中 如下所示
  • 过程需要未提供的参数

    我在访问 SQL Server 中的存储过程时收到错误 Server Error in Application Procedure or function ColumnSeek expects parameter template whic
  • 如何在嵌入式框架中使用 Cocoapods?

    我正在一个新项目中为我的自定义视图使用嵌入式框架 以利用 Xcode 6 中新的 IBDesignable 内容 并且我想使用 Facebook 的 Pop 为所述视图设置动画 我已使用 Cocoapods 将 Pop 添加到项目中 但嵌入
  • 使用golang exec执行docker命令失败

    我正在使用 cmd go 见下文 执行 docker 命令 但失败了 我执行以下步骤来执行并收到以下错误 go build sudo cmd Output docker run v exp a out a out ubuntu 14 04
  • 如何设置本地Python库目录/PYTHONPATH?

    今天在尝试编写一个使用 PIL 的 Python 脚本的过程中 我发现我的本地计算机上似乎没有它 OS X 10 5 8 默认安装 2 5 Python 所以我跑 easy install prefix usr local python p
  • 如何列出可用的密码算法?

    我正在得到一个密码实现Cipher getInstance String algorithm 我的印象是 我可能传递的可用算法名称根据类路径中存在的库而有所不同 我想编写一个简单的程序 可以使用不同的类路径运行 该程序将列出可用的密码算法名
  • (java) - 哈希函数在给定范围内均匀分布字符串?

    所以 我正在寻找一个哈希函数 假设没有输入倾斜 将 最多 16字节的非空字符串 合理地均匀地 分布到一个范围上 0 n where n是用户输入 但不会随时间变化 And我应该能够争论why该函数应该提供 相当均匀 的分布 最后 我所需要的
  • iOS 8:通过 UIAppearance 设置 UITableView 背景颜色

    我习惯于执行以下操作来设置所有实例的样式UITableView BOOL application UIApplication application didFinishLaunchingWithOptions NSDictionary la
  • jQuery JSON 循环嵌套对象

    我目前有这个 getJSON test json function data var items each data function key val items push li val li ul ul class my new list
  • 在 vim 中查找变量的下一次出现

    我想知道是否 如何让 vim 查找下一次出现的变量 假设变量的名称只是 n 那么 n会给我所有出现过的那封信 但这并不总是很有帮助 我想我可以创建一个正则表达式来解决这个问题 但我想知道是否有一些我还不知道的命令 击键 由于我所有的谷歌搜索
  • 以字节为单位读取大文件

    EDIT 根据建议 我已开始实施以下内容 private string Reading string filePath byte buffer new byte 100000 FileStream strm new FileStream f
  • 在Google地图中动态绘制多边形

    我是安卓新手 我一直在尝试将视野应用到谷歌地图中我当前的位置 该图显示了 iOS 中 Google 地图上的 FOV 所以基本上我做了类似的事情 添加了 5 个具有不同 alpha 的三角形 以使整个 fov 成为渐变 我必须根据设备的方位
  • 如何改变下拉列表的宽度?

    我有一个列表框 我想减小它的宽度 这是我的代码
  • Laravel 命令无法在子类中调用 $this->info()

    我刚刚开始学习 PHP 中的 OO 基本概念 Foo php class Foo extends Command public function construct parent construct public function fire
  • 如何使用 jquery 在动态生成的文本区域上自动运行方法?

    我正在使用一个插件 https github com jaz303 jquery grab bag blob master javascripts jquery autogrow textarea js https github com j
  • C++ 内联字符串流

    我想用std stringstream创建格式化字符串 但使用内联类 所以我没有stringstream局部变量到处乱飞 我的意思是这样的 include
  • 使用 PHP 从网页中提取特定数据[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 中的 HTML 抓取 https stackoverflow com questions 34120 html scraping in php 我想知道是否有任何方法可以从网页获取特定的文本字
  • Firestore 规则:resource.data.keys() 不包含读取中的所有字段

    设置 我在 Firebase Firestore 中有一个集合 其中包含以下字段 active created description displayName expires image type uid userName where ex
  • 什么是谓词调度

    我最近看到很多关于 Clojure 中谓词分派的讨论 想知道这件事是否有什么意义 换句话说 什么是谓词分派以及它与泛型函数 OOP 多态性和模式有何不同 谢谢 谓词分派包含泛型函数 OOP 多态性 模式匹配等 一个好的概述是谓词调度 统一的
  • Coldfusion onCFCRequest 将 XML 的返回类型更改为 WDDX

    我的客户群终于不再使用 Coldfusion 8 所以现在我可以利用 Coldfusion 9Application cfc gt onCFCRequest事件 我有一个测试场景设置 但结果不是我所期望的 我有一个我调用的方法 它会产生一个