5

我已经设置了我的第一个 REST API,并且我是使用 Taffy 框架的新手。

我有一个正在使用 ColdFusion 10、IIS 和使用 ColdBox 的站点。我在目录中设置了一个 hello world 示例。我//在响应中得到两个斜线。以下是响应示例:

//["hello","world"] 

我的 hello.cfc 看起来像这样:

component extends="taffy.core.resource" taffy_uri="/hello" {

    function get(){
        return representationOf(['hello','world']);
    }

}

我的 application.cfc 看起来像这样:

<cfcomponent extends="taffy.core.api">
    <cfscript>

        this.name = hash(getCurrentTemplatePath());
        this.mappings["/resources"] = listDeleteAt(cgi.script_name, listLen(cgi.script_name, "/"), "/") & "/resources";

        variables.framework = {};
        variables.framework.reloadKey = "reload";
        variables.framework.reloadPassword = "test";
        variables.framework.serializer = "taffy.core.nativeJsonSerializer";
        variables.framework.returnExceptionsAsJson = true;

        function onApplicationStart(){
            return super.onApplicationStart();
        }

        function onRequestStart(TARGETPATH){
            // reload app to make any envoirnmental changes
            if(structkeyexists(url,'reloadApp')){
                applicationStop();
                location('index.cfm');
            }
            // load Taffy onRequestStart before our stuff
            super.onRequestStart();

            if (request.taffyReloaded) {
                // reload ORM as well
                ORMReload();
            }
        }

        function onTaffyRequest(verb, cfc, requestArguments, mimeExt){
            return true;
        }
        function onError(Exception)
        {
            writeDump(Exception);
            abort;
        }
    </cfscript>
</cfcomponent>

谁能告诉我哪里出错了?这与使用 ColdBox 有关吗?

4

1 回答 1

8

这来自ColdFusion 管理员中的服务器端设置,位于 settings 下序列化 JSON 的前缀为. 从 ColdFusion 10 开始,它默认启用以确保安全。(我相信该功能是在 ColdFusion 9 中添加的。)通过为序列化的 JSON 字符串添加自定义前缀来保护 Web 服务,这些服务会从跨站点脚本攻击中返回 JSON 数据。你可以在那里关闭它,但我不建议这样做。相反,您应该使用您的代码来处理它。

请参阅 Raymond Camden 的这篇文章 -在 jQuery 和 jQueryUI 中处理带有前缀的 JSON

注意:此设置也可以通过设置secureJSONsecureJSONPrefix在您的 Application.cfc 文件中为每个应用程序设置。请参阅此处的文档 -应用程序变量

secureJSON- 一个布尔值,指定是否在 ColdFusion 函数以 JSON 格式返回以响应远程调用的值之前添加安全前缀。

默认值是管理员服务器设置 > 设置页面中前缀序列化 JSON 设置的值(默认为 false)。您可以在 cffunction 标记中覆盖此值。

secureJSONPrefix- 如果 secureJSON 设置为 true,则放置在 ColdFusion 函数以 JSON 格式返回以响应远程调用的值前面的安全前缀。

默认值是管理员服务器设置 > 设置页面中前缀序列化 JSON 设置的值(默认为 //,JavaScript 注释字符)。

于 2016-01-11T13:48:08.300 回答