论坛首页 Web前端技术论坛

隐藏iframe提交不能设置session

浏览 5077 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-12-13   最后修改:2010-12-13
我试图通过以下代码用js建立一个隐藏的iframe,提交form信息,form的action指向一个php在这里我设置了一个session,在下面的操作中,我试图取出这个session,可是没有成功。
表象上看,iframe里设置session会出问题,我在网上查了设置P3P头的方法,此方法只是解决ie权限问题的,可是我使用的是firefox,这种方法对我来说还是不起作用。
如果我把下面代码的第一句var ifr = d.createElement("IFRAME");改称var ifr = d.createElement("DIV");就会重定向的其他页面,session也设置成了,可是就失去了用iframe隐式提交的目的了。
请大家提出宝贵方案。谢谢!

其实这个问题可以简化为,为什么在js生成的iframe下不能设置session?

	
        var ifr	= d.createElement("IFRAME");
	ifr.name	= generate_tmpid(10);
	ifr.id	= ifr.name;
	ifr.style.display	= "none";
	d.getElementsByTagName('body')[0].appendChild(ifr);
	try { w.frames[ifr.name].name	= ifr.name } catch(e) {}
	var frm	= d.createElement("FORM");
	frm.method	= "POST";
	frm.action	= 'postform_attachupl';
	frm.enctype	= "multipart/form-data";
	frm.encoding	= "multipart/form-data";
	frm.target	= ifr.name;
	frm.name	= generate_tmpid(10);
	frm.style.display	= "none";
	var inp1	= d.createElement("INPUT");
	inp1.type	= "hidden";
	inp1.name	= "keyy";
	inp1.value	= postform_generate_tmpid(10);
	frm.appendChild(inp1);
	var inp2	= fileinput.cloneNode(true);
	inp2.name	= "file";
	inp2.disabled	= false;
	if(inp2.value == fileinput.value) {
		frm.appendChild(inp2);
		d.getElementsByTagName('body')[0].appendChild(frm);
		frm.submit();
	}
   发表时间:2010-12-13  
记得测试过firefox和chrome都无问题,连用script标签请求都能正确设置cookie
0 请登录后投票
   发表时间:2010-12-13  
clue 写道
记得测试过firefox和chrome都无问题,连用script标签请求都能正确设置cookie

应该不是cookie问题,我httpwatch显示两次请求cookie里的session号是一致的。
我就是在第一次iframe action页面设置了$_SESSION['a'] = 'b';在第二个请求页面得不到这个结果
0 请登录后投票
   发表时间:2010-12-13  
jeffgeng 写道
clue 写道
记得测试过firefox和chrome都无问题,连用script标签请求都能正确设置cookie

应该不是cookie问题,我httpwatch显示两次请求cookie里的session号是一致的。
我就是在第一次iframe action页面设置了$_SESSION['a'] = 'b';在第二个请求页面得不到这个结果

你的意思是在后端php中无法获取表单提示时存储的数据?
并且你有提到两次请求时session_id是一致的,那应该不是前端问题了。

建议看看是不是次序问题,你是在请求完成后再进行第二次请求的吗?
0 请登录后投票
   发表时间:2010-12-13  
clue 写道
jeffgeng 写道
clue 写道
记得测试过firefox和chrome都无问题,连用script标签请求都能正确设置cookie

应该不是cookie问题,我httpwatch显示两次请求cookie里的session号是一致的。
我就是在第一次iframe action页面设置了$_SESSION['a'] = 'b';在第二个请求页面得不到这个结果

你的意思是在后端php中无法获取表单提示时存储的数据?
并且你有提到两次请求时session_id是一致的,那应该不是前端问题了。

建议看看是不是次序问题,你是在请求完成后再进行第二次请求的吗?


嗯,我查一下,是第一次设置的session,第二次取不到。
补充一下,如果把上边代码frm.target = ifr.name;这句改称frm.target = '_top'就可以取到了,所以我怀疑是iframe的问题,哪位给提示一下,谢拉!
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics