2016-01-09 2 views
4

У меня установлен мой первый REST API, и я новичок в использовании системы Taffy.Ответ дает // слэши при запуске - Taffy - ColdFusion

У меня есть сайт, который работает на 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?

+0

Вы упомянули ColdBox во втором абзаце выше, но код, который вы включили, показывает только ссылки Taffy. Вы имели в виду Taffy вместо ColdBox? Если да, можете ли вы исправить свою запись, чтобы устранить путаницу? –

+0

# Карл фон Шеттен. Я просто упомянул об этом, так что проблема может быть связана с родительским приложением. мой каталог - это нечто подобное. html-папка содержит все приложение coldbox и/html/api/taffy папку, выше которой я упомянул. Но это связано с secureJSONPrefix, о котором упоминал Мигель-Ф. –

ответ

7

Это исходит из настройки на стороне сервера в ColdFusion admin, under settings. Префикс сериализованный JSON с. Начиная с ColdFusion 10, он включен по умолчанию для обеспечения безопасности. (Я считаю, что функция была добавлена ​​с ColdFusion 9.) Защищает веб-службы, которые возвращают данные JSON из межсайтовых скриптовых атак путем префикса сериализованных строк JSON с помощью специального префикса. Вы можете отключить его, но я не рекомендую это делать. Вместо этого вы должны обращаться с этим кодом.

Посмотреть этот пост от Раймонда Camden - Handling JSON with prefixes in jQuery and jQueryUI

Примечание: этот параметр также может быть установлен для каждого приложения, установив secureJSON и secureJSONPrefix в файле Application.cfc. См. Документацию об этом здесь - Application variables.

secureJSON - Логическое значение, указывающее, следует ли добавить префикс безопасности перед значением, что функция ColdFusion возвращает в JSON-формате в ответ на удаленный вызов.

Значение по умолчанию - это значение параметра Серийный JSON префикса на странице «Настройки сервера администратора»> «Настройки» (по умолчанию это значение false). Вы можете переопределить это значение в теге cffunction.

secureJSONPrefix - Префикс безопасности для установки перед значением, которое функция ColdFusion возвращает в формате JSON в ответ на удаленный вызов, если значение параметра secureJSON равно true.

Значением по умолчанию является значение параметра Серийный JSON префикса на странице «Настройки сервера администратора»> «Настройки» (по умолчанию используется символ //, символ комментария JavaScript).

+0

Это googd. Просто дайте мне знать, как бы я определил его на уровне функции. это что-то вроде этой функции get() secureJSON = false {}. Но это не работает. –

+0

В документации, которую я нашел, указано, что тег 'cffunction' допускает атрибут' secureJSON'.Интересно, является ли это одной из тех вещей, которые они не переносили на язык 'cfscript' _SIGH_. Я все еще ищу, чтобы быть уверенным ... –

+0

Я попробовал это с this.secureJSON в application.cfc и с помощью cffunction также. Но для них это тоже не работает. –

Смежные вопросы