最近寫了幾個Facebook的App.
發生了一個蠻怪的問題就是IE以外的瀏覽器都可以正常的取得$_POST變數的值,
唯獨使用IE的時候沒有辦法取得$_POST變數值.
搞了好久才發現是Facebook PHP SDK在ie執行的時候.
在接收傳值的頁面,如果使用$facebook->getsession(),他會先redirect以取得目前的session.
這個狀況會導致$_POST的值跑掉.
最後用google找到一個方法.解決跨網域的問題.
在執行PHP SDK前先判斷是不是瀏覽器是不是ie.
如果是的話就餵給他一段檔頭.
以下為程式碼的範例:
if (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE'))
{
header('p3p: CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"');
}
也可以直接加在IIS或Apache上.
IIS:
功能檢視->HTTP回應標頭->新增->名稱:p3p;值:CP=CAO PSA OUR
apache:
<VirtualHost>
Header set P3P 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'
</VirtualHost>
參考來源:
http://forum.developers.facebook.net/viewtopic.php?id=73645
http://forum.developers.facebook.net/viewtopic.php?id=74056
http://www.neatstudio.com/show-1390-1.shtml
沒有留言:
張貼留言