1. 程式人生 > >關於ajax跨域的一些解決方案

關於ajax跨域的一些解決方案

dst control 關於 請求 method request 進行 前端 請求方式

1、JSONP方式解決跨域問題

jsonp解決跨域問題是一個比較古老的方案(實際中不推薦使用),當然,在實際項目中如果要使用JSONP,一般會使用JQ等對JSONP進行了封裝的類庫來進行ajax請求

實現原理:

JSONP之所以能夠用來解決跨域方案,主要是因為 <script> 腳本擁有跨域能力,而JSONP正是利用這一點來實現。

註意:

基於JSONP的實現原理,所以JSONP只能是“GET”請求,不能進行較為復雜的POST和其它請求,所以遇到那種情況,就得參考下面的CORS解決跨域了(所以如今它也基本被淘汰了)

2、CORS解決跨域問題

在Node.js後臺配置(express框架)

Node.js的後臺也相對來說比較簡單就可以進行配置。只需用express如下配置:

app.all(‘*‘, function(req, res, next) {

   res.header("Access-Control-Allow-Origin", "*");

   res.header("Access-Control-Allow-Headers", "X-Requested-With");

  res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");

  res.header(
"X-Powered-By", ‘ 3.2.1‘) //這段僅僅為了方便返回json而已 res.header("Content-Type", "application/json;charset=utf-8"); if(req.method == ‘OPTIONS‘) { //讓options請求快速返回 res.sendStatus(200); } else { next(); } });

3、代理請求方式解決接口跨域問題

註意,由於接口代理是有代價的,所以這個僅是開發過程中進行的。

與前面的方法不同,前面CORS是後端解決,而這個主要是前端對接口進行代理,也就是:

  • 前端ajax請求的是本地接口

  • 本地接口接收到請求後向實際的接口請求數據,然後再將信息返回給前端

  • 一般用node.js即可代理

關於如何實現代理,這裏就不重點描述了,方法和多,也不難,基本都是基於node.js的。

關於ajax跨域的一些解決方案