導航:首頁 > IDC知識 > 域名跨域

域名跨域

發布時間:2020-09-11 15:12:58

1、如何解決iframe跨域子域名間跨域操作js的問題

建立隱藏iframe前頁面b.html,並前頁定義函數a伺服器端返數據重定向同域頁面(a.html)a.html寫段js執行函數a提取a.html數據obj並數據作參數傳給函數window.parent.a(obj);a.html包含b.html所window.parent.a(obj)其實調用b.html定義a函數硬跨域數據拿

2、跨域有哪幾種方式?

1. 通過jsonp跨域

2. document.domain+iframe跨域

3. nginx代理跨域

4. nodejs中間件代理跨域

5. 後端在頭部信息裡面設置安全域名

3、域名下非同步請求ip 會不會跨域

這個是什麼意思的呢 想注冊域名的話直接注冊就可以的吧 沒聽過這種的哦 top的

4、跨域是指什麼,因為什麼引起的?有哪些解決方案?web前端知識

域(Domain)是Windows網路中獨立運行的單位,域之間相互訪問則需要建立信任關系(即Trust Relation)。信任關系是連接在域與域之間的橋梁。當一個域與其他域建立了信任關系後,2個域之間不但可以按需要相互進行管理,還可以跨網分配文件和列印機等設備資源,使不同的域之間實現網路資源的共享與管理。 有一種簡明的說法來解釋廣域跨域:跨域訪問,簡單來說就是 A 網站的 javascript 代碼試圖訪問 B 網站,包括提交內容和獲取內容。由於安全原因,跨域訪問是被各大瀏覽器所默認禁止的。


解決方案:

1、js向伺服器發送請求,然後讓伺服器去另一個域上獲取數據後返回。(用於你無法控制另一個域) 比如php中利用cUrl。
2、放置跨域文件.
3、用JSONP。雖然不能跨域進行通信,但是可以引入跨域的js文件。
先定義一個函數

var returnData;
function getData(obj) {
   returnData = JSON.parse(obj);
}


當我們要向www.baidu.com/s.php請求數據的時候,我們可以引入某個包含返回信息的js文件。
比如: <script type="text/javascript" src="www.baidu.com/s.php?id=12321" />
js的內容是getData({json:'格式'});返回時輸出 格式是 text/javascript (比如php用header('Content-type:text/javascript');來輸出)
那麼文件載入好後解析js時就會執行這個函數,返回得到的數據就被賦值給了returnData變數
以這樣的方式插入到頁面中:

var script = document.createElement('script');
script.src='www.baidu.com/s.php?id=12321';  //傳入參數id=12321
body.appendChild(script);

5、什麼是跨域,跨域的實現方式有哪些

什麼是跨域?
同源策略是由Netscape提出的著名安全策略,是瀏覽器最核心、基本的安全功能,它限制了一個源(origin)中載入文本或者腳本與來自其他源(origin)中資源的交互方式
,所謂的同源就是指協議、域名、埠相同。
當瀏覽器執行一個腳本時會檢查是否同源,只有同源的腳本才會執行,如果不同源即為跨域
跨域的幾種方式
在項目中可能會需要在一個域名下請求另外一個域名的資源,下面我們來探討下跨域的幾種實現方式
jsonp
最常見的一種跨域方式,其背後原理就是利用了script標簽不受同源策略的限制,在頁面中動態插入了script,script標簽的src屬性就是後端api介面的地址,並且以get的方式將前端回調處理函數名稱告訴後端,後端在響應請求時會將回調返還,並且將數據以參數的形式傳遞回去。

6、網站A想要跨域訪問網站B,B能獲取A的真實域名嗎?如果可以,請說明詳細方法。

一些站長軟體是能做到的。數據之家什麼的都有這個功能的。只要在b網站上加一段代碼就可以了

7、不同ip地址,不同域名,能通過cors跨域嗎

CORS跨域支持不同埠、不同IP/域名等各種跨域
只要對方返回正確的跨域響應頭,並且當前瀏覽器支持,則可以跨域

8、為什麼設置了域名,微信還是跨域拒絕

必須開通旺鋪,才能設置二級域名的,如果到期不續費會回收域名,新手賣家現在有旺鋪扶持版,沒有一鑽信譽的都可以免費使用旺鋪,超過1鑽信譽的必須付費

我的淘寶-店鋪管理-域名設置,然後設置你想要的域名,保存

9、如何解決跨域問題

特別注意兩點:
第一,如果是協議和埠造成的跨域問題「前台」是無能為力的,
第二:在跨域問題上,域僅僅是通過「URL的首部」來識別而不會去嘗試判斷相同的ip地址對應著兩個域或兩個域是否在同一個ip上。
「URL的首部」指window.location.protocol +window.location.host,也可以理解為「Domains, protocols and ports must match」。
2. 前端解決跨域問題
1> document.domain + iframe (只有在主域相同的時候才能使用該方法)
1) 在www.a.com/a.html中:

復制代碼
document.domain = 'a.com';
var ifr = document.createElement('iframe');
ifr.src = 'http://www.script.a.com/b.html';
ifr.display = none;
document.body.appendChild(ifr);
ifr.onload = function(){
var doc = ifr.contentDocument || ifr.contentWindow.document;
//在這里操作doc,也就是b.html
ifr.onload = null;
};
復制代碼
2) 在www.script.a.com/b.html中:

document.domain = 'a.com';

2> 動態創建script
這個沒什麼好說的,因為script標簽不受同源策略的限制。

復制代碼
function loadScript(url, func) {
var head = document.head || document.getElementByTagName('head')[0];
var script = document.createElement('script');
script.src = url;

script.onload = script.onreadystatechange = function(){
if(!this.readyState || this.readyState=='loaded' || this.readyState=='complete'){
func();
script.onload = script.onreadystatechange = null;
}
};

head.insertBefore(script, 0);
}
window.baidu = {
sug: function(data){
console.log(data);
}
}
loadScript('http://suggestion.baidu.com/su?wd=w',function(){console.log('loaded')});
//我們請求的內容在哪裡?
//我們可以在chorme調試面板的source中看到script引入的內容
復制代碼

3> location.hash + iframe
原理是利用location.hash來進行傳值。

假設域名a.com下的文件cs1.html要和cnblogs.com域名下的cs2.html傳遞信息。
1) cs1.html首先創建自動創建一個隱藏的iframe,iframe的src指向cnblogs.com域名下的cs2.html頁面
2) cs2.html響應請求後再將通過修改cs1.html的hash值來傳遞數據
3) 同時在cs1.html上加一個定時器,隔一段時間來判斷location.hash的值有沒有變化,一旦有變化則獲取獲取hash值
註:由於兩個頁面不在同一個域下IE、Chrome不允許修改parent.location.hash的值,所以要藉助於a.com域名下的一個代理iframe

代碼如下:
先是a.com下的文件cs1.html文件:

復制代碼
function startRequest(){
var ifr = document.createElement('iframe');
ifr.style.display = 'none';
ifr.src = 'http://www.cnblogs.com/lab/cscript/cs2.html#paramdo';
document.body.appendChild(ifr);
}

function checkHash() {
try {
var data = location.hash ? location.hash.substring(1) : '';
if (console.log) {
console.log('Now the data is '+data);
}
} catch(e) {};
}
setInterval(checkHash, 2000);
復制代碼
cnblogs.com域名下的cs2.html:

復制代碼
//模擬一個簡單的參數處理操作
switch(location.hash){
case '#paramdo':
callBack();
break;
case '#paramset':
//do something……
break;
}

function callBack(){
try {
parent.location.hash = 'somedata';
} catch (e) {
// ie、chrome的安全機制無法修改parent.location.hash,
// 所以要利用一個中間的cnblogs域下的代理iframe
var ifrproxy = document.createElement('iframe');
ifrproxy.style.display = 'none';
ifrproxy.src = 'http://a.com/test/cscript/cs3.html#somedata'; // 注意該文件在"a.com"域下
document.body.appendChild(ifrproxy);
}
}

10、二級域名之間可以相互跨域嗎?

可以的,但是一定要保持內容的相關性,不搭邊的內容不要跨域。

與域名跨域相關的知識