實現跨域訪問的方法總結

2021-09-08 20:09:40 字數 1425 閱讀 3825

跨域, 是指呼叫方和被呼叫方的協議網域名稱,不完全相同(即不同源),跨域的訪問或呼叫會被瀏覽器禁止,因而跨域是瀏覽器端特有的,服務端無跨域問題。

服務端**,又稱為請求**/反向**

原理:

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...