網域名稱又稱網域、網域名稱,是由一串用點分隔的名字組成的internet上某一台計算機或計算機組的名稱,用於在資料傳輸時標識計算機的電子方位(有時也指地理位置)。internet的核心服務dns(domain name system,網域名稱系統,有時也簡稱為網域名稱)提供網域名稱到ip位址的相對映。以方便使用者不用去記機器能識別的ip位址。
網域名稱的劃分。我們所熟悉的com,gov,edu,cn,hk,us,tw等等這些是頂級網域名稱,一般用來分配給特殊機構或者某個國家用於標識。在頂級網域名稱下,每個web**會到各自國家的網域名稱服務提供商那裡去申請網域名稱,申請到的網域名稱就是二級網域名稱,例如:google.com,baidu.com,segmentfault.com等等。在二級網域名稱下,一些大的web**一般會根據不同的業務或者功能等,使用不同的子網域名稱即**網域名稱,例如code.google.com,mail.google.com等等。依此類推,再往下就是**網域名稱,例如:***.***.***.***。一般使用的比較少。說到這,我想你已經可以分辨網域名稱等級了。對於乙個url,去掉協議頭(例如http://,https://),相對路徑(例如/***.htm,/***/***.htm?a=***),剩下的部分,看有幾個'.',有n個,就是n級網域名稱,沒有就是頂級網域名稱。
內域、外域、跨域都是有乙個參照物的概念,必須以某個url為基準,其他的url對於其而言是屬於內域還是外域。對於同一級網域名稱下的所有url,都屬於乙個域。
如以mail.google.com/abc/***.htm為基準。
內域:mail.google.com/def/***.htm與其屬於同乙個域,故可以認為是內域。
外域:google.com/abc/***.htm與其的網域名稱級別不同,不屬於同乙個域故可認為是外域。
跨域:跨域更多是用來標識某個跳轉的動作。如從乙個域下面(mail.google.com/abc/***.htm)跳轉到另乙個域下面(google.com/abc/***.htm),就可以認為是跨域。所以外域標識的兩個url之間的跳轉,就是跨域跳轉。
由於瀏覽器在訪問web**的時候會與web伺服器建立seesion(這個做web開發的應該很清楚了吧,如不太清楚請自行google之),session在瀏覽器端的儲存是通過乙個seesionid來維護,而seesionid的作用域是與網域名稱繫結的,不同網域名稱的session是不同的。所以導致了不同網域名稱下的web站點需要共享某些資訊(例如使用者的登入資訊等)時,就有跨域的問題。通常這是跨域導致的主要問題之一,比較好的解決方案就是sso。對於跨域還有很多前端的問題:例如js不能跨域呼叫等等,由於本人對前端不是十分了解,就不做表述了。
下面是幾個簡單的跨域例子:
1、一級網域名稱不同:google.com與baidu.com
2、一級網域名稱相同,二級網域名稱不同:mail.google.com與code.google.com
3、依此類推,n級網域名稱相同,n+1級網域名稱不同...
除了這些之外,一般有些人所說的跨域往往還包括:
4、網域名稱相同,埠不同:***.com:80與***.com:8080 同乙個ip不同埠,也是跨域
5、網域名稱相同,協議不同:與
6、ip與網域名稱的混合:和
前言來自:
1.瀏覽器限制:
瀏覽器出於安全的考慮,當瀏覽器發現跨域時,它會做一些校驗,校驗不通過時,它就會報錯跨域安全問題。
在示例中,(示例見文章尾部)
200:說明請求被正確處理,控制台也列印輸出資訊。則伺服器沒有任何問題,而且正確處理,是瀏覽器報錯的原因.
跨域的安全限制都是對瀏覽器端來說的,伺服器端是不存在跨域安全限制的
2.跨域
你傳送的請求不屬於本域。協議、網域名稱、埠號任何乙個不一樣,都是跨域。
3.xhr(xmlhttprequest)請求
傳送請求2
這兩種請求方式都不是xhr請求(1.document,2.json),他們不會報關於跨域安全問題的錯。
這三個情況同時滿足才會產生跨域安全問題
1.瀏覽器禁止檢查
cmd中輸入:
2.jsonp解決跨域問題
jsonp(json with padding) 是 json 的一種"使用模式",是非官方協議,它是乙個約定。jsonp可以讓網頁從別的網域名稱(**)那獲取資料,即跨域讀取資料。jsonp是乙個同源策略。埠和主機對於兩個頁面是相同的,則兩個頁面具有相同的源,否則就是不同源的。
使用jsonp後台伺服器需要修改**的:
@controlleradvice
public class jsonpadvice extends abstractjsonpresponsebodyadvice
}//後台:super("callback1");時
$.ajax(
});
重新整理後,不再報錯。
請求中還有乙個引數:_=隨機生成的數字,它的作用是防止請求被快取。如果ajax請求中加上cache:true,這個引數將沒有。
請求型別是script
jsonp實現原理:
與原來不同之處:請求型別不同,jsonp的請求型別是script;返回型別也不同,jsonp返回的是js
json核心就是:允許使用者傳遞乙個callback引數給服務端,然後服務端返回資料時會將這個callback引數作為函式名來包裹住json資料,這樣客戶端就可以隨意定製自己的函式來自動處理返回資料了。
jsonp的弊端
示例:
ajax跨域與cookie跨域
ajax跨域取資料 利用可以跨域載入js的原理 functioncallback 這是需要返回這樣乙個js函式 ajax資料型別使用jsonp 如 ajax url callbask x datatype jsonp type get 在使用資料型別為jsonp時,jquery自動會在url路徑上拼...
js跨域 ajax跨域 跨域方式(前端)
跨域方式 cors 跨域資源共享 當使用xmlhttprequest傳送請求時,瀏覽器會自動加上乙個請求頭 origin,後端在接受到請求後確定響應後會在response headers中加入乙個屬性 access control allow origin,值就是發起請求的源位址 瀏覽器得到響應會進...
ajax跨域問題
ajax跨域和js的跨域通訊 cross the site 的幾種解決方案 1.什麼引起了ajax跨域不能的問題 ajax本身實際上是通過xmlhttprequest物件來進行資料的互動,而瀏覽器出於安全考慮,不允許js 進行跨域操作,所以會警告。2.有什麼完美的解決方案麼?沒有。解決方案有不少,但...