跨域, 是指呼叫方和被呼叫方的協議、網域名稱和埠,不完全相同(即不同源),跨域的訪問或呼叫會被瀏覽器禁止,因而跨域是瀏覽器端特有的,服務端無跨域問題。
服務端**,又稱為請求**/反向**
原理:
a站的頁面跨域訪問b站的服務端介面,a站請求自己的後端介面,a站的後端介面負責**請求到b站,並將b站的響應返回給a站頁面。
適用場景:
呼叫第三方服務介面
優點:
比較通用,可解決大多數跨域問題
缺點:
需要後端支援(提供**介面),增加本站伺服器負擔,無法維持session狀態
系統a(a.com)對外提供乙個郵件傳送介面,可接收get或post方式傳遞引數(如email, subject, body等)資料。當系統b(b.com)需要使用到這個介面的功能時,並提供比較好的使用者體驗時,採取了通過ajax將使用者填入的資訊傳遞資料給這個介面,來實現傳送郵件的目的。
系統b的頁面請求自身的後端介面proxy.php
$.post(
'',,
function(data)
);
proxy.php**請求到系統a
$post = $_post;
$data = array(
'email' => $post['email'],
'subject' => $post['subject'],
'body' => $post['body'],
);$url = ''; // 系統a的傳送郵件介面
原理:由於引用外部資源不受同源策略限制,如
父頁面
子頁面
父頁面
切換iframe src
子頁面
僅僅是子網域名稱不同,可改為同域。如:blog.exam.com, exam.com blog.examp.com/hello.html中,可設定 document.domain = 'exam.com';
h5 api
需後端支援
nginx實現跨域訪問
簡單來說 兩個url只要協議 網域名稱 埠有任何乙個不同,都被當作是不同的域,相互訪問就會有跨域問題。例如 在開發前後端完全分離的系統中,服務端 屬於乙個工程,前端 屬於另乙個工程,前端開發人員在進行介面對接時,可能會在webstorm等工具進行編碼,並用webstorm的內建伺服器進行除錯,這就會...
ajax jsonp實現跨域訪問
ajax自動拼接的完整請求jsonp為 方法名 引數a 格式的文字,success方法把接收到的資料按jsonp格式處理,取出引數a傳給success方法的引數data package com.nongmall.manage.controller import org.springframework...
跨域訪問Jquery實現
跨域訪問 js實現。環境 net3.5 jquery json.net 因為在跨域實現,所以這裡新建 這個 只需要 1 customer 類public class customer public string customername public string memo public strin...