关于 p3p ie 跨域 问题
1.二級域名
HTML code
<%@ Page Language="C#"%>
<%
HttpCookie hc = new HttpCookie("OutByTopDomain", "OutByTopDomain" + DateTime.Now.ToString());
hc.Expires = DateTime.Now.AddDays(30);//過期時間為30天
hc.Domain = "你的頂級域名";//設置共享域,如aa.com,bb.aa.com等,可以設置為aa.com,這樣可以在子域共享
Response.Cookies.Add(hc);
%>
subdomain.aspx,子域讀cookie
HTML code
<%@ Page Language="C#"%>
<%
Response.Write("頂級域名產生的Cookie==|" + Response.Cookies["OutByTopDomain"].Value + "|===");
%>
2.sso方案
?通過設置p3p頭來實現跨域訪問cookie
今天在w3網站上看到了一篇介紹p3p的文章(http://www.w3.org/TR/P3P/),利用這個可以實現跨域訪問cookie,我也試驗一下。 其實很簡單:試驗用了2個域名readlog.cn和diaor.com 首先在readlog.cn下放置一個文件setcookie.php 內容:? PHP代碼 header(’P3P: CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND
?PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"’);//p3p?? setcookie("TestCookie","test",time()+3600,"/",".readlog.cn");//設置cookie? 再放置一個readcookie.php 內容: 然后在diaor.com下放置setcookie.php ,內容: JavaScript代碼 1. <script src="http://www.readlog.cn/setcookie.php"></script>? 然后訪問http://www.diaor.com/setcookie.php 抓取數據包可以發現,在readlog.cn域下生成了一個cookie ,名稱是TestCookie,值是test 下面訪問http://www.readlog.cn/readcookie.php 來驗證一下,可以發現,cookie確實設置成功了。 有興趣可以去掉header(’P3P: CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IN
D PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"’);這句,試一下就會發現cookie能設置,但是在readlog.cn讀不到這個cookie。
------IIS 通用設置
打開IIS
?
管理工具——〉選擇一個網站——〉屬性——〉http頭,增加一個http頭 然后輸入頭名:P3P輸入頭內容:CP=CAO PSA OUR
------HttpModual實現
可以用httpmodual來實現在全部頁面或者部分頁面頭部插入所需要的標志
------老外的解決方案
http://articles.sitepoint.com/article/p3p-cookies-ie6/2
-----P3P設置驗證
http://www.w3.org/P3P/validator.html,
利用js解決ajax跨域問題
由于安全性問題, ajax在進行請求數據時,不能跨域請求. 比如 在 http://www.a.com/ 下的頁面, 無法ajax請求www.b.com/ajax.php的內容. 盡管這樣的需求不多,但遇到了怎么辦? 這里給出一個JS模擬ajax的方式實現跨域, 但僅僅局限于GET!
在 <script> 標簽中, src的屬性是可以設置非本域下的地址的. 借助此特點,即可模擬ajax的方式實現跨域. 假設 http://www.a.com/ 域名下的程序 需要通過ajax方式提交數據到 http://www.b.com/ 下的login.php?username=*&passwod=*實現登陸判斷. 實現方式如下: 在http://www.a.com/內動態創建JS的方式來加載http://www.b.com/的內容,代碼如下
JavaScript代碼
//此代碼在http://www.a.com/下???
var head = document.getElementsByTagName("head")[0];???????
var js = document.createElement("script");???????
js.src = "http://www.b.com/login.php?username=*&passwod=*";???????
js.onload = js.onreadystatechange = function()???????
{???????
??? if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")???????
??? {???
???????? head.removeChild(js);???
???????? //JS加載完畢了. 類似于ajax請求完成.???
???????? //執行是否登陸成功的判斷???
??? }???????
}???????
head.appendChild(js);??
這只是一個簡單的例子,需要b.com下的login.php做好配合,login.php通過GET取得傳入值,并生成JS的登陸標記. JS加載完成后,根據JS標記判斷登陸的狀態,提示登陸成功或失敗.即可完成要求,代碼兼容常見瀏覽器. :)
當然缺陷也很明顯,只能支持GET的方式提交數據. 下一次我會在說說ajax跨域POST的方法.
?????????????????????????????????????????? 用JS或jQuery訪問頁面內的iframe,兼容IE/FF
js或者jQuery訪問頁面中的框架也就是iframe. 注意:框架內的頁面是不能跨域的! 假設有兩個頁面,在相同域下. index.html 文件內含有一個iframe:
XML/HTML代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">??
<html xmlns="http://www.w3.org/1999/xhtml">??
<head>??
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />??
<title>頁面首頁</title>??
</head>??
??
<body>??
<iframe src="iframe.html" id="koyoz" height="0" width="0"></iframe>??
</body>??
</html>??
iframe.html 內容:
XML/HTML代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">??
<html xmlns="http://www.w3.org/1999/xhtml">??
<head>??
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />??
<title>iframe.html</title>??
</head>??
??
<body>??
<div id="test">www.koyoz.com</div>??
</body>??
</html>??
1. 在index.html執行JS直接訪問:
JavaScript代碼
document.getElementById('koyoz').contentWindow.document.getElementById('test').style.color='red'??
通過在index.html訪問ID名為'koyoz'的iframe頁面,并取得此iframe頁面內的ID為'test'的對象,并將其顏色設置為紅色.
此代碼已經測試通過,能支持IE/firefox . 2. 在index.html里面借助jQuery訪問:
JavaScript代碼
$("#koyoz").contents().find("#test").css('color','red');??
?
?
?
轉載于:https://www.cnblogs.com/skyangell/archive/2010/03/11/1683085.html
總結
以上是生活随笔為你收集整理的关于 p3p ie 跨域 问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【引用】内网安全数据保密技术分析与比较
- 下一篇: PHP foreach 小结