У меня есть страница Coldfusion с опубликованными значениями формы, которые я передаю на страницу php (через cfhttp). Пример кода Coldfusion:
<cfhttp method="Post" url="https://www.test.com/ssl/get_cookies.php" result="cookieResponse"> <cfoutput> <cfif isdefined( "ppcid" )><cfhttpparam name="PPCID" type="formField" value="#session.ppcid#"></cfif> <cfif isdefined( "cid" )><cfhttpparam name="CID" type="formField" value="#session.cid#"></cfif> <cfif isdefined( "leadcomm" )><cfhttpparam name="LEADCOMM" type="formField" value="#LEADCOMM#"></cfif> <cfif isdefined( "clk" )><cfhttpparam name="CLK" type="formField" value="#CLK#"></cfif> <cfif isdefined( "dck" )><cfhttpparam name="DCK" type="formField" value="#DCK#"></cfif> <cfif isdefined( "ccid" )><cfhttpparam name="CCID" type="formField" value="#CCID#"></cfif> </cfoutput> </cfhttp>
После того, как я отправлю эти значения в get_cookie.php, я хочу установить эти значения как файлы cookie. Вот пример моего кода get_cookies.php:
setcookie("LEADCOM", getVariable('LEADCOMM'), time()+604800, "/", ".fha.com", 0); setcookie("CCID", getVariable('CCID'), time()+604800, "/", ".fha.com", 0); setcookie("QTR", getVariable('QTR'), time()+604800, "/", ".fha.com", 0); setcookie("CLK", getVariable('CLK'), time()+604800, "/", ".fha.com", 0); setcookie("DCK", getVariable('DCK'), time()+604800, "/", ".fha.com", 0);
FYI – getVariable является функцией $ _REQUEST переменной CF в PHP. Я проверяю мой браузер, и я не вижу эти куки, даже когда я пытаюсь пересмотреть страницу. Какие-либо предложения?
Вы устанавливаете файлы cookie в браузере. В этом случае «браузер» является тегом CFHTTP
который не поддерживает файлы cookie. Вы можете прочитать файлы cookie, которые были установлены, они возвращаются в ответе cfhttp, но они нигде не будут написаны.
В случае вашего примера выше вы можете представить свой запрос CFHTTP в качестве «браузера», который делает запрос на страницу PHP. Печеньки, которые вы устанавливаете на PHP, возвращаются в результат CFHTTP «cookieResponse». В этот момент они все еще находятся на сервере, ничто не было возвращено первоначальному клиенту (тот, который вызывал страницу CF для начала). Если вы хотите, чтобы они были установлены в качестве файлов cookie в этот момент в браузер конечного пользователя, вам необходимо снова установить их с помощью ColdFusion. Это означает, что вам придется проанализировать результат cookieResponse.header, найти файлы cookie. Вы можете получить куки-файлы с помощью cookieResponse.responseHeader ["SET-COOKIE"] и установить их в браузер конечного пользователя cfheader
Как это
<cfset cookies = cookieResponse.responseHeader["set-cookie"] /> <cfloop from="1" to="#structCount(cookies)#" index="i"> <cfheader name="SET-COOKIE" value="#cookies[i]#" /> </cfloop>