java後臺+vue前端,解決jsonp跨域問題(有資料返回的,但是Response的body或者data為空)
前端Vue採用jsonp方法訪問後臺資料
前端請求程式碼:
getAllList() { //匯入Vue-resource.js,通過this.$http發起資料請求 //this.$http.get('url').then(function(result){}) //通過then指定回撥函式,可獲取伺服器返回的資料 //判斷result.status是否等於200,200為請求成功。 //若是0,則將result.body賦值給this.list。若不是則提示獲取資料失敗 this.$http.jsonp('http://localhost:8080/VueServer/server') .then(function(result) { console.log(result)//便於檢視資料返回情況 if(result.status === 200) { this.list = result.body } else { alert('獲取資料失敗') } }) }
後臺servlet主要程式碼:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setHeader("content-type", "text/html;charset=UTF-8");
PrintWriter out;
out=resp.getWriter();
out.write("[{id:1, name:'賓士'},{id:2, name:'寶馬'}]");
}
在控制檯Network檢視,該請求是有資料返回的,但是Response的body或者data為空,狀態碼status為0
原因是jsonp在傳送請求的時候在URL後面自動添加了 一個callback引數,而而我們沒有把這個引數返回導致Response無資料
解決方法:
在後臺獲取callback的值並將其與返回資料拼接後一起放回
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setHeader("content-type", "text/html;charset=UTF-8"); PrintWriter out; out=resp.getWriter(); //獲取callback值與需要返回的資料拼接,一併返回給前端。注意需要返回的資料需要用小括號“()”包裹起來 out.write(req.getParameter("callback") + "([{id:1, name:'賓士'},{id:2, name:'寶馬'}])"); }
這樣前端就可以準確獲取資料了,如圖
相關推薦
java後臺+vue前端,解決jsonp跨域問題(有資料返回的,但是Response的body或者data為空)
前端Vue採用jsonp方法訪問後臺資料 前端請求程式碼: getAllList() { //匯入Vue-resource.js,通過this.$http發起資料請求 //this.$http.get('url').then(function(result){})
Vue前端服務代理實現跨域請求資料。
開發中請求真實伺服器資料,配置伺服器代理實現跨域。 vue-cli + webpack 構建的專案 再 ./config/index.js 檔案中配置 proxyTable: { '/api':{ target: 'http://請求的伺服器地址',
服務端讀取圖片內容返回前端,解決圖片跨域問題
最近在配合前端開發,開發一個圖片裁剪功能的時候,遇到一個oss圖片跨域請求,無法訪問的問題,索性自己寫個介面,先讀取圖片檔案流再直接返回前端。具體程式碼如下。 1.新建檔案流內容封裝類FileContent 1 public class FileContent { 2 private b
企業微信JS-SDK引用(java後臺,vue前端)
近期需要隱藏企業轉發等功能,需要呼叫企業微信JS-SDK,把自己寫的留存下. 步驟一:引入JS檔案 步驟二:通過config介面注入許可權驗證配置 注:所有需要使用JS-SDK的頁面必須先注入配置資訊,否則將無法呼叫(同一個url僅需呼叫一次,對於變化url的SPA
在vue中使用jsonp跨域訪問資料
1.首先在src目錄下建立一個api目錄,下面建立cofing.js和recommend.js檔案,在config.js檔案中是一些跨域訪問的引數:export const commonParams = { source: 'wap' //訪問時的公共引數 } exp
Vue前端配置代理實現跨域請求
跨域的解決方法: *設定讓伺服器允許跨域 *前端配置代理實現跨域請求 本文介紹前端配置代理實現跨域請求: 在專案config資料
vue-resource中的jsonp跨域請求
jsonp的用法 jsonp請求主要是用來解決ajax跨域請求問題,使用jsonp實現跨域首先要保證伺服器api支援jsonp請求的格式。 寫法格式: this.$http.jsonp('ur
【練習】angularjs(最基本的$http使用jsonp跨域,使用jsonp跨域獲取天氣(採用百度地圖天氣api),路由功能實現單頁面不跳轉切換)
1.最基本的$http使用jsonp跨域 <body ng-app="app"> <div ng-controller="controller"> </div> <script src="angularjs/angularjs.js
SpringBoot2.0高階案例(10):整合 JWT 框架,解決Token跨域驗證問題
GitHub原始碼地址:知了一笑 https://github.com/cicadasmile/middle-ware-paren
關於vue-cliaxsios的使用和跨域訪問資料的總結
一、安裝axsois 1.安裝:在vue-cli根目錄下安裝axsois 2.更改原型鏈方法:在main.js下更改: 3.在元件中使用: 二、跨域 1.在config/index.js 新增如下程式碼: proxyTable: { './api':{ targ
在Vue中如何使用axios跨域訪問資料
最近在專案中需要用到axios,所以就惡補一下這個axios到底是什麼東東。越來它是vue-resource的替代品,官網也說了,以後都用axios, vue-resource不在維護。那麼這個axios怎麼用呢,上網搜尋了一大堆,基本上都是雷同,我也不知道那些作者有沒有在
JSONP跨域讀取資料
json是一種資料傳輸格式,而jsonp是一種資料獲取的方式,沒有什麼相關性。jsonp是一種輕量級的資料傳輸方式,為什麼要使用jsonp呢?為什麼我們從不同的域(網站)訪問資料需要一個特殊的技術(JSONP )呢?這是因為同源策略。同源策略,它是由Netscape提出的一個
解決ajax跨域獲取資料的問題
不講原理 只是說說解決的方法吧 1:在servlet中的dopost()方法中宣告一句話: 加一個頭宣告 // response.setContentType("text/json; charset=utf-8");response.setHeader("Acc
JSONP跨域訪問資料傳輸
JSON(JavaScript Object Notation)和JSONP(JSON with Padding)雖然只有一個字母的差別,但其實他們根本不是一回事兒 JSON是一種資料交換格式,而JSONP是一種依靠開發人員的聰明才智創造出的一種非官方跨域資料
Spring Boot支援JSONP跨域請求資料(Ajax的jsonp)
1:在Spring Boot的Api伺服器上進行配置 package me.loveshare.note1.configuration; import org.springframework.web.
AngularJs---JSONP跨域訪問資料傳輸
Jquery中jsonp的使用 myUrl = "http://localhost:8090/api/test"; $.ajax({ type:"GET", url:myUrl, dataType:"jsonp", jsonp:"callback",
跨域請求 資料返回卻無法執行回撥函式的原因之一
由於公司專案的問題,導致跨域的情況比較多。既要考慮安全性問題又要解決跨域。只能從中做一些取捨。 今天發現的問題是,前端已經獲取了後臺返回的CALLBACK函式,但是無論如何都不執行。這可把我急的,之前也寫過一次跨域請求。現在呼叫同樣寫好的函式,卻是一個能執行一
解決ajax跨域的辦法,代理,cors,jsonp
resource 通過 使用 -o 參考 acc log 方式 sha 1、使用php做代理去請求第三方api接口 php是可以跨域的,我們利用ajax請求本域名中的php文件,php再去請求第三方接口文件,從而達到跨域目的。 php做代理請求: aj
java後臺介面SSM框架解決跨域問題
這幾天和前端對接介面,前端的錯誤資訊是: 註釋: Failed to load http://192.168.3.3:8080/Light_Push/webFrames.action?page=1&searchProject=1&page=1
jQuery和java後臺的jsonp跨域問題
Jsonp原理: ajax本身是不可以跨域的,通過產生一個script標籤來實現跨域。因為script標籤的src屬性是沒有跨域的限制的。其實設定了dataType: ‘jsonp’後,$.ajax方法就和ajax XmlHttpRequest沒什麼關係了