網站跨域的五種解決方式
因為瀏覽器使用了同源策略,所以產生跨域請求。一個網頁向另一個不同網域名稱/不同協定/不同連接埠的網頁請求資源,這就是跨網域。本篇文章提供了5種方式來解決網站跨域,有興趣的朋友可以看看。
1、什麼是跨越?
- 一個網頁向另一個不同網域名稱/不同協定/不同連接埠的網頁要求資源,這就是跨網域。
- 跨域原因產生:在目前網域請求網站中,預設不允許透過ajax請求發送其他網域。
2、為什麼會產生跨域請求?
因為瀏覽器使用了同源策略
#3、什麼是同源策略?
- 同源策略是Netscape提出的一個著名的安全策略,現在所有支援JavaScript的瀏覽器都會使用這個策略。同源策略是瀏覽器最核心也最基本的安全功能,如果缺少同源策略,瀏覽器的正常功能可能會受到影響。可以說web是建構在同源策略的基礎上的,瀏覽器只是針對同源策略的一種實作。
4、為什麼瀏覽器要使用同源策略?
是為了保證使用者的資訊安全,防止惡意網站竊取數據,如果網頁之間不滿足同源要求,將不能:
- 1、共享Cookie、LocalStorage、IndexDB
- #2、取得DOM
- 3、AJAX請求不能發送
-
同源策略的非絕對性: - 等帶有src屬性的標籤可以從不同的域載入和執行資源。其他插件的同源策略:flash、java applet、silverlight、googlegears等瀏覽器載入的第三方插件也有各自的同源策略,只是這些同源策略不屬於瀏覽器原生的同源策略,如果有漏洞則可能被駭客利用,從而留下XSS攻擊的後患
所謂的同源指:網域名稱、網路協定、連接埠號碼相同,三條有一條不同就會產生跨域。例如:你用瀏覽器開啟
http://baidu.com
,瀏覽器執行JavaScript腳本時發現腳本向http://cloud.baidu.com
網域發請求,這時瀏覽器就會報錯,這就是跨域報錯。
<script></script> <img/> <iframe/> <link/> <video/> <audio/>
- 當我們正常地請求一個JSON資料的時候,服務端返回的是一串 JSON類型的數據,而我們使用 JSONP模式來請求資料的時候服務端回傳的是一段可執行的 JavaScript程式碼。因為jsonp 跨域的原理就是用的動態載入 script的src ,所以我們只能把參數透過 url的方式傳遞,所以jsonp的 type型別只能是get範例:
$.ajax({
url: 'http://192.168.1.114/yii/demos/test.php', //不同的域
type: 'GET', // jsonp模式只有GET 是合法的
data: {
'action': 'aaron'
},
dataType: 'jsonp', // 数据类型
jsonp: 'backfunc', // 指定回调函数名,与服务器端接收的一致,并回传回来
})
登入後複製
$.ajax({ url: 'http://192.168.1.114/yii/demos/test.php', //不同的域 type: 'GET', // jsonp模式只有GET 是合法的 data: { 'action': 'aaron' }, dataType: 'jsonp', // 数据类型 jsonp: 'backfunc', // 指定回调函数名,与服务器端接收的一致,并回传回来 })
- #使用JSONP 模式來請求資料的整個流程:客戶端發送一個請求,規定一個可執行的函數名稱(這裡就是 jQuery做了封裝的處理,自動幫你產生回呼函數並把資料取出來供success屬性方法來呼叫,而不是傳遞的一個回調句柄),伺服器端接受了這個 backfunc函數名,然後把資料透過實參的形式發送出去

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用PHP和Ajax建置自動完成建議引擎:伺服器端腳本:處理Ajax請求並傳回建議(autocomplete.php)。客戶端腳本:發送Ajax請求並顯示建議(autocomplete.js)。實戰案例:在HTML頁面中包含腳本並指定search-input元素識別碼。

標題:解決jQueryAJAX請求出現403錯誤的方法及程式碼範例403錯誤是指伺服器禁止存取資源的請求,通常會導致出現這個錯誤的原因是請求缺少權限或被伺服器拒絕。在進行jQueryAJAX請求時,有時會遇到這種情況,本文將介紹如何解決這個問題,並提供程式碼範例。解決方法:檢查權限:首先要確保請求的URL位址是正確的,同時驗證是否有足夠的權限來存取該資

jQuery是一個受歡迎的JavaScript函式庫,用來簡化客戶端端的開發。而AJAX則是在不重新載入整個網頁的情況下,透過發送非同步請求和與伺服器互動的技術。然而在使用jQuery進行AJAX請求時,有時會遇到403錯誤。 403錯誤通常是伺服器禁止存取的錯誤,可能是由於安全性原則或權限問題導致的。在本文中,我們將討論如何解決jQueryAJAX請求遭遇403錯誤

掌握HTTP301狀態碼的意思:網頁重定向的常見應用場景隨著網路的快速發展,人們對網頁互動的要求也越來越高。在網頁設計領域,網頁重定向是一種常見且重要的技術,透過HTTP301狀態碼來實現。本文將探討HTTP301狀態碼的意義以及在網頁重新導向中的常見應用場景。 HTTP301狀態碼是指永久重新導向(PermanentRedirect)。當伺服器接收到客戶端發

如何解決jQueryAJAX報錯403的問題?在開發網頁應用程式時,經常會使用jQuery來發送非同步請求。然而,有時在使用jQueryAJAX時可能會遇到錯誤代碼403,表示伺服器禁止存取。這種情況通常是由伺服器端的安全性設定所導致的,但可以透過一些方法來解決這個問題。本文將介紹如何解決jQueryAJAX報錯403的問題,並提供具體的程式碼範例。一、使

使用Ajax從PHP方法取得變數是Web開發中常見的場景,透過Ajax可以實作頁面無需刷新即可動態取得資料。在本文中,將介紹如何使用Ajax從PHP方法中取得變量,並提供具體的程式碼範例。首先,我們需要寫一個PHP檔案來處理Ajax請求,並傳回所需的變數。下面是一個簡單的PHP檔案getData.php的範例程式碼:

如何在C++中實現HTTP流傳輸?使用Boost.Asio和asiohttps客戶端程式庫建立SSL流套接字。連接到伺服器並發送HTTP請求。接收HTTP響應頭並列印它們。接收HTTP回應正文並列印它。

Ajax(非同步JavaScript和XML)允許在不重新載入頁面情況下新增動態內容。使用PHP和Ajax,您可以動態載入產品清單:HTML建立一個帶有容器元素的頁面,Ajax請求載入資料後將資料加入到該元素中。 JavaScript使用Ajax透過XMLHttpRequest向伺服器傳送請求,從伺服器取得JSON格式的產品資料。 PHP使用MySQL從資料庫查詢產品數據,並將其編碼為JSON格式。 JavaScript解析JSON數據,並將其顯示在頁面容器中。點選按鈕觸發Ajax請求,載入產品清單。
