Сделать шаблон .cfm доступным только через ajax call? - PullRequest
4 голосов
/ 27 августа 2009

У меня есть настроенный шаблон, к которому я делаю ajax-вызовы через jQuery. Я передаю параметр URL с именем «method», а затем выполняю через каждый метод, чтобы определить, какой блок кода следует выполнить.

Проблема в том, что я не хочу, чтобы эта страница была доступна вне вызова ajax. Другими словами, я не хочу, чтобы шаблон запускался, если кто-то просто набирает URL в своем браузере.

Есть ли способ сделать это? Я подумал, что в .php есть способ определить тип запроса. Существует ли что-нибудь подобное в Coldfusion? Или есть предложения?

Ответы [ 3 ]

8 голосов
/ 27 августа 2009

jQuery вводит запрос с заголовком X-Requested-With, установленным со значением «XMLHttpRequest». В Coldfusion вы можете просмотреть это, сбросив HTTP-запрос:

<cfdump var="#getHTTPRequestData()#">

Итак, все, что вам нужно сделать, это проверить этот заголовок, например:

<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>
5 голосов
/ 27 августа 2009

Если вы используете CF8, «для этого есть функция». :)

на стороне клиента : использовать теги cfajax, которые заполняют представление (то есть cfdiv, cfwindow, cfgrid, cfinput ...)

на стороне сервера : используйте VerifyClient() в шаблоне .cfm

ИЛИ:

на стороне клиента : используйте <cfajaxproxy> для сборки JS для удаленного прокси CFC

на стороне сервера : использовать <cffunction name="remoteMethod" access=remote verifyClient="true">

1 голос
/ 06 ноября 2009

Ничто из этого не защитит вас по-настоящему, оно только остановит немотивированных, так как мотивированные (хаксоры) могут подделать любой заголовок, который тривиально включается в запрос, используя плагин для браузера, такой как Live HTTP Headers.

https://addons.mozilla.org/en-US/firefox/addon/3829

В лучшем случае безвестность оставит вам немного больше, чем безопасность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...