Редактировать: важной частью может быть то, что я вызываю метод cfc через ajax ...
Я вызываю метод cfc через ajax, который возвращает данные для использования в таблице jqgrid.Внутри метода cfc я пытаюсь настроить обработку ошибок, чтобы вместо того, чтобы просто отказывать и не показывать пользователю никаких проблем, я отправляю пользователей на страницу ошибок, которая определяется как error.cfm в корневом каталоге.и который прямо сейчас включает в себя некоторые шаблоны HTML.Внутри Application.cfc я определил свой метод onError () следующим образом:
<cffunction name="onError" returnType="void" output="false" >
<cfargument name="exception" required="true" >
<cfargument name="eventname" type="string" required="true" >
<cfmail to="#application.REGISTRATION_NOTIFICATION#" from="outgoing address" subject="Error">
</cfmail>
<cflocation url="../index.cfm?file=error.cfm" addToken="false" />
Когда я выкидываю ошибку из метода cfc, независимо от того, находится он внутри cfcatch или нет, Chromeсообщает, что меня действительно отправили в index.cfm со значением STATUS = 200, и в ответе правильно отображается html, который находится внутри шаблона error.cfm.Однако браузер на самом деле не переходит на страницу.
Дело в том, что если я изменю местоположение на
<cflocation url="index.cfm?file=error.cfm" addToken="false" />
и выдам ошибку со страницы, которая вызывала cfc,вместо cfc, cflocation работает как положено.Кроме того, если я использую cfinvoke для вызова cfc с исходной страницы, вместо вызова ajax, cflocation работает.Так что это должно быть как-то связано с тем, что я делаю вызов cfc через ajax, а не вызываю его изнутри CF.Так чего мне здесь не хватает?
ps это происходит в Chrome, IE и FF.Я использую CF 9.0.1 с исправлениями, без фреймворков.Вот подмножество выходных данных из панели «Сеть» Chrome в заголовках для ссылающейся страницы:
URL-адрес запроса: http://localhost/sitename/cfc/method.cfc
Метод запроса: GET
Код состояния:302 Временно перемещено
Заголовки запроса: просмотр источника
Принять: application / json, text / javascript, / ;q = 0,01
Accept-Charset: ISO-8859-1, utf-8; q = 0,7, *; q = 0,3
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US, en; q = 0,8
Соединение: keep-alive
Cookie: CFID = 11801;CFTOKEN = 90037336;LASTVISIT = 1327852981759
Хост: localhost
Источник: http://localhost/sitename/index.cfm?file=referringfile.cfm
Пользователь-агент: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 535.7 (KHTML, как Gecko) Chrome/16.0.912.77 Safari / 535.7
X-Requested-With: XMLHttpRequest
Запрос параметров строки запроса URL-адрес в кодировке
метод: getPartNumbers
filter: {"page": 1, "sessionSQL": "1327834969791", "filterRows": [{"FIELD_NAME": "PART_NUMBER", "OPERAND": "EQUALS", "FIELD_VALUE": "11 06 01"}]}
_search: false
nd: 1327835014639
строк: 100
страница: 1
sidx: PART_NUMBER
sord: desc
Заголовки ответа вид источника
Content-Type: text / html;charset = UTF-8
Дата: вс, 29 января 2012 11:03:34 GMT
Расположение: ../ index.cfm? file = error.cfm
Постоянный-Auth: true
Сервер: Microsoft-IIS / 7.5
Set-Cookie: LASTVISIT = 1327853014657; истекает = пт, 27 июля 2012 г. 11:03:34 GMT; путь =/
Кодирование передачи: chunked
X-Powered-By: ASP.NET
И для страницы error.cfm:
URL-адрес запроса: http://localhost/sitename/index.cfm?file=error.cfm
Метод запроса: GET
Код состояния: 200 OK
Запрос заголовков представления источника
Прием: application / json, текст/ javascript, / ;q = 0,01
Accept-Charset: ISO-8859-1, utf-8; q = 0,7, *; q = 0,3
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US, en; q = 0,8
Авторизация: согласование blahblahblahblah
Соединение: keep-alive
Cookie: CFID = 11801;CFTOKEN = 90037336;LASTVISIT = 1327716554490
Хост: localhost
Реферер: http://localhost/sitename/index.cfm?file=filename/filename.cfm&Config=filename
Пользователь-агент: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 535,7 (KHTML, как Gecko) Chrome / 16.0.912.77 Safari / 535.7
X-Requested-With: XMLHttpRequest
Query String Параметры просмотра URL в кодировке
файл: error.cfm
Заголовки ответа вид источника
Content-Type: Текст / html; charset = UTF-8 Дата: пт, 27 января 2012 21: 09: 14
GMT Постоянный-Auth: true Сервер: Microsoft-IIS / 7.5
Set-Cookie: LASTVISIT = 1327716554533; срок действия = ср., 25 июля 2012 г. 21:09:14 GMT; путь = /
Transfer-Encoding: фрагментированный
X-Powered-By: ASP.NET