Pan*_*kaj 8 c# asp.net-mvc c#-4.0 asp.net-mvc-3 asp.net-mvc-4
页面包含IFrame,只有在Safari的情况下会话才为空.我的Safari版本是5.1.7
我正在使用MVC 4.5 Everything在其他浏览器中完美运行.我使用以下代码..
protected override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
filterContext.HttpContext.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");
GetFirstError();
}
Run Code Online (Sandbox Code Playgroud)
我们有完全相同的问题 - 在ASP.Net MVC项目中,FB应用程序无法在Safari中运行.以下是我们修复它的方法:
将P3P标头添加到所有重新发布.您可以在IIS服务器级别配置它:http://support.microsoft.com/kb/324013 - 或直接在global.asax中进行配置:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("P3P", "CP=\"NOI CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT\"");
}
Run Code Online (Sandbox Code Playgroud)w3c在您的网站的根目录中创建文件夹(所谓的知名位置),p3p.xml并policy.p3p根据以下Microsoft指南上传和文件:如何在您的网站上部署P3P隐私政策
这是我的p3p.xml文件:
<META>
<POLICY-REFERENCES>
<POLICY-REF about="/w3c/policy.p3p">
<INCLUDE>/</INCLUDE>
<COOKIE-INCLUDE/>
</POLICY-REF>
</POLICY-REFERENCES>
</META>
Run Code Online (Sandbox Code Playgroud)
和policy.p3p(对不起,它很长,但我不知道如何隐藏它作为扰流板):
<?xml version="1.0"?>
<POLICIES xmlns="http://www.w3.org/2002/01/P3Pv1">
<!-- Generated by IBM P3P Policy Editor version Beta 1.12 built 2/27/04 1:19 PM -->
<!-- Expiry information for this policy -->
<EXPIRY max-age="86400"/>
<POLICY
xml:lang="uk">
<!-- Description of the entity making this policy statement. -->
<ENTITY>
<DATA-GROUP>
</DATA-GROUP>
</ENTITY>
<!-- Disclosure -->
<ACCESS><nonident/></ACCESS>
<!-- No dispute information -->
<!-- Statement for group "Basic information" -->
<STATEMENT>
<EXTENSION optional="yes">
<GROUP-INFO xmlns="http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="Basic information"/>
</EXTENSION>
<!-- Consequence -->
<CONSEQUENCE>
Data collected from all Web users: access logs, and search strings (if entered).</CONSEQUENCE>
<!-- Use (purpose) -->
<PURPOSE><admin/><current/><develop/></PURPOSE>
<!-- Recipients -->
<RECIPIENT><ours/></RECIPIENT>
<!-- Retention -->
<RETENTION><indefinitely/></RETENTION>
<!-- Base dataschema elements. -->
<DATA-GROUP>
<DATA ref="#dynamic.clickstream"/>
<DATA ref="#dynamic.http"/>
<DATA ref="#dynamic.searchtext"/>
</DATA-GROUP>
</STATEMENT>
<!-- Statement for group "Cookies" -->
<STATEMENT>
<EXTENSION optional="yes">
<GROUP-INFO xmlns="http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="Cookies"/>
</EXTENSION>
<!-- Consequence -->
<CONSEQUENCE>
Cookies are used to track visitors to our site,
so we can better understand what portions of our site best serve you.</CONSEQUENCE>
<!-- Use (purpose) -->
<PURPOSE><develop/><tailoring/></PURPOSE>
<!-- Recipients -->
<RECIPIENT><ours/></RECIPIENT>
<!-- Retention -->
<RETENTION><business-practices/></RETENTION>
<!-- Base dataschema elements. -->
<DATA-GROUP>
<DATA ref="#dynamic.cookies" optional="yes"><CATEGORIES><uniqueid/></CATEGORIES></DATA>
</DATA-GROUP>
</STATEMENT>
<!-- End of policy -->
</POLICY>
</POLICIES>
Run Code Online (Sandbox Code Playgroud)
安装Safari时默认情况下不接受第三方cookie.这意味着当您访问域A并将域B嵌入iframe时,在用户与iframe的内容进行交互之前,它不会接受来自B的Cookie.
在开发需要会话的Facebook应用程序时,这种情况让我非常不满意,客户端不接受告诉用户启用第三方cookie的解决方案.这是我实施的解决方法,并且从那时起一直在工作:
<script>top.location = "http://example.com/cookiefix";</script>- 需要JS来消除iframe使用请求跟踪并查看传入的请求 cookie,或使用调试代理查看客户端(或浏览器调试工具)上的值。cookie 被关闭了吗?您的会话 GUID 每次从服务器到客户端时是否都会更改 - 在这种情况下,会话不会保持建立状态
| 归档时间: |
|
| 查看次数: |
6847 次 |
| 最近记录: |