ajax跨域 ajax跨域學習總結(一)

2021-09-01 12:58:23 字數 3167 閱讀 8849

網域名稱又稱網域、網域名稱,是由一串用點分隔的名字組成的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.有什麼完美的解決方案麼?沒有。解決方案有不少,但...