khr*_*003 7 session facebook cross-browser
我正在开发一个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设置都可以,但我不知道如何解决这个问题.
Car*_*ñoz 22
尝试在php文件的顶部添加此标头:
<?php
header('p3p: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"');
?>
Run Code Online (Sandbox Code Playgroud)
这将使跨域AJAX调用在IE中工作
编辑:
实际上,长期正确答案如下:
在开发IFrame Canvas应用程序(或来自不同域的页面中托管的任何其他iframe)时,在某些情况下(默认IE配置)会限制对cookie(称为第三方cookie)的访问.Firefox,Chrome,Safari,Opera都按预期工作,但IE阻止访问此Cookie.此标头的存在(称为P3P紧凑隐私策略)将使IE接受来自不同域的cookie.
以及这如何使你的会话代码工作?
那么为了在服务器中保存会话信息,该页面发布存储在客户端中的会话cookie.如果你的iframe使用了session,那么浏览器必须允许它存储cookie.
落入存储cookie意味着会话将丢失,基于会话的代码将像您发布的那样失败.
希望这可以帮助.
PS:BTW我不知道p3p头中所有奇怪的首字母缩略词是什么意思.我已经看到它的许多变化,所以你应该尝试更多地研究它
| 归档时间: |
|
| 查看次数: |
8009 次 |
| 最近记录: |