我有两个网站,让我们说他们是example.com和anotherexample.net.上anotherexample.net/page.html,我有一个IFRAME SRC="http://example.com/someform.asp".IFRAME显示用户填写并提交的表单http://example.com/process.asp.当我someform.asp在自己的浏览器窗口中打开表单(" ")时,一切正常.但是,当我someform.asp在IE 6或IE 7中作为IFRAME 加载时,example.com的cookie不会保存.在Firefox中,此问题不会出现.
出于测试目的,我在http://newmoon.wz.cz/test/page.php上创建了类似的设置.
example.com使用基于cookie的会话(我无能为力),所以没有cookie,process.asp就不会执行.如何强制IE保存这些cookie?
嗅探HTTP流量的结果:在GET /someform.asp响应中,有一个有效的每会话Set-Cookie头(例如Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY),但在POST /process.asp请求中,根本没有Cookie头.
Edit3:一些AJAX +服务器端脚本显然能够回避这个问题,但这看起来非常像一个bug,而且还会打开一组全新的安全漏洞.我不希望我的应用程序使用bug +安全漏洞的组合只是因为它很容易.
编辑:P3P政策是根本原因,下面有完整的解释.
我正在开发一个Facebook应用程序.Stragnly,该应用程序在大多数浏览器上都能正常工作(我在FF,chrome和safari上进行了测试,并且它在所有浏览器上都运行良好).但是,当我在IE8上测试时,我在尝试对其中一个页面进行ajax调用时收到此错误消息:
Fatal error: Uncaught Exception: 102: Requires user session thrown in
/home1/website/public_html/facebook/src/facebook.php on line 515
Run Code Online (Sandbox Code Playgroud)
这是包含第515行的函数facebook.php:
protected function _restserver($params) {
// generic application level parameters
$params['api_key'] = $this->getAppId();
$params['format'] = 'json-strings';
$result = json_decode($this->_oauthRequest(
$this->getApiUrl($params['method']),
$params
), true);
// results are returned, errors are thrown
if (is_array($result) && isset($result['error_code'])) {
throw new FacebookApiException($result);
}
return $result;
}
Run Code Online (Sandbox Code Playgroud)
我的猜测是,无论是使用会话还是IE8设置都可以,但我不知道如何解决这个问题.