我有一个项目,要求我将登录数据发布到另一个域。提交表单后,将在浏览器中设置一个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是最佳解决方案?