ログインデータを別のドメインに投稿する必要があるプロジェクトがあります。フォームの送信後、ブラウザーに Cookie が設定され、ユーザーはリダイレクトされます。
私は次のようにjavascriptでこれを達成することができました:
<cfsavecontent variable="headOUT">
<script type="text/javascript">
function redirectPost(url, data) {
var form = document.createElement('form');
document.body.appendChild(form);
form.method = 'post';
form.action = url;
for (var name in data) {
var input = document.createElement('input');
input.type = 'hidden';
input.name = name;
input.value = data[name];
form.appendChild(input);
}
form.submit();
}
</script>
</cfsavecontent>
<cfhtmlhead text="#headOUT#">
<cfset htmlOUT = ''>
<cfset htmlOUT = htmlOUT & '<script type="text/javascript">'>
<cfset htmlOUT = htmlOUT & "redirectPost('#remote_url#', { authen_token: '#encryptedString#' });">
<cfset htmlOUT = htmlOUT & '</script>'>
<cfoutput>#htmlOUT#</cfoutput>
cfhttp を使用する場合:
<cfhttp method="Post" url="#remote_url#" RESOLVEURL="Yes">
<cfhttpparam type="Formfield" name="authen_token" value="#encryptedString#">
</cfhttp>
応答には Cookie は含まれません。ページからログインしたかのように、メタ リダイレクトを含む HTML のみです。しかし、Cookie がないと認証されません。
cfhttp や cflocation を使用してリダイレクトと投稿を行う方法はありますか、それとも JavaScript が最適なソリューションですか?