摘要:如何實(shí)現(xiàn)服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求第三方接口的數(shù)據(jù),也是服務(wù)器解決跨域的問題通過轉(zhuǎn)發(fā)接口的數(shù)據(jù),代碼實(shí)例如下跨域問題,當(dāng)你無法操作后臺(tái)是否可以跨域的時(shí)候服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求創(chuàng)建請(qǐng)求監(jiān)聽接受數(shù)據(jù)監(jiān)聽關(guān)閉發(fā)送請(qǐng)求啟動(dòng)服務(wù)之后,就可以通過來訪問數(shù)據(jù)。
如何實(shí)現(xiàn)服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求第三方接口的數(shù)據(jù),也是node服務(wù)器解決跨域的問題
通過localhost轉(zhuǎn)發(fā)接口
https://m.maizuo.com/v4/api/film/now-playing?__t=1523003169298&page=1&count=5
的數(shù)據(jù),代碼實(shí)例如下:
html
cross
// 跨域問題,當(dāng)你無法操作后臺(tái)是否可以跨域的時(shí)候 var http = require("http"); var https = require("https"); var server = http.createServer(); var fs = require("fs"); server.listen("8080"); var url = require("url"); server.on("request",(request,response)=>{ var path = url.parse(request.url); if(path.pathname == "/") { fs.readFile("./html/coress.html",(err,info)=>{ response.write(info); response.end(); }) } else if(path.pathname.startsWith("/v4")) { //服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求 //創(chuàng)建請(qǐng)求 var request = https.request({ hostname:"m.maizuo.com", port:"443", path:path.path, method:"GET" },(resp)=>{ let results = ""; //監(jiān)聽接受數(shù)據(jù) resp.on("data",(dataObj)=>{ results += dataObj; }) //監(jiān)聽關(guān)閉 resp.on("end",()=>{ response.write(results); response.end(); }) }) // 發(fā)送請(qǐng)求 request.end(); } })
啟動(dòng)服務(wù)之后,就可以通過:
http://localhost:8080/v4/api/film/now-playing?__t=1523003169298&page=1&count=5
來訪問數(shù)據(jù)。
二,下面來探討一下node服務(wù)器如何攔截ajax請(qǐng)求,注意,頁面引入jquery引入第三方是不存在跨域的問題,只有通過ajax調(diào)用第三方接口請(qǐng)求數(shù)據(jù)的時(shí)候,才會(huì)存在跨域。
我們將html定義如下
Document 這是一個(gè)div這是一個(gè)div這是一個(gè)div這是一個(gè)div這是一個(gè)div這是一個(gè)div這是一個(gè)div這是一個(gè)div這是一個(gè)div這是一個(gè)div這是一個(gè)div
我們將css文件和js文件一致放到public文件夾下面
我們通過express提供的第三方插件static讀取靜態(tài)的資源文件
server.use("/static",express.static(__dirname+"/public"));
在頁面上定義2個(gè)按鈕
利用jquery請(qǐng)求按鈕點(diǎn)擊事件觸發(fā)
$(".btn1").on("click",function() { $.ajax({ url:"/api/user/login?name=zs&password=lisi", method:"GET", success:function(data) { console.log("成功"); console.log(data); }, error:function() { console.log("失敗"); } }) }) $(".btn2").on("click",function() { $.ajax({ url:"/api/user/login", method:"POST", data:{ name:"sz", password:"r4tr4" }, success:function(data) { console.log("成功"); console.log(data); }, error:function() { console.log("失敗"); } }) })
在node主入口js文件里面進(jìn)行攔截請(qǐng)求
server.get("/",(req,res)=>{ fs.readFile("./html/node.html",(err,info)=>{ if(!err) { res.write(info); res.end(); } }) }) //服務(wù)器攔截get請(qǐng)求 server.get("/api/user/login",(req,res)=>{ console.log(req.url); res.json({ status:200, message:"登錄成功", data:{"getData":"fdsafds","goods":"ffffd","dsf":"343"} }) }) //服務(wù)器攔截post請(qǐng)求 server.post("/api/user/login",(req,res)=>{ console.log(req.url); res.json({ status:200, message:"登錄成功", data:{"postdata":"fdsafd","goods":"ffffd","dsf":"343"} }) })
點(diǎn)擊get按鈕,前端請(qǐng)求的數(shù)據(jù)如下:
點(diǎn)擊post按鈕,前端請(qǐng)求的數(shù)據(jù)如下:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94007.html
摘要:缺點(diǎn)需要增加本地的代碼量,以及需要配置實(shí)現(xiàn)攔截優(yōu)點(diǎn)數(shù)據(jù)通過會(huì)更豐富。缺點(diǎn)修改內(nèi)容溝通成本高,跟后端扯皮利用去模擬優(yōu)點(diǎn)可控內(nèi)容以及實(shí)現(xiàn)動(dòng)態(tài)。三本地周邊知識(shí)本地的思想就是利用完成。注意接口的和自己的接口不要沖突。 VueCli3.0中集成MockApi 一:使用場(chǎng)景 哎喲,好煩啊,這個(gè)需求還么結(jié)束就來下一個(gè)需求,程序員不要排期的嗎? 沒辦法啊,資本主義的XX嘴臉啊 來吧,技術(shù)評(píng)審我倆把接口...
摘要:支持請(qǐng)求響應(yīng)攔截器。定位與目標(biāo)的定位是成為請(qǐng)求的終極解決方案。攔截器支持請(qǐng)求響應(yīng)攔截器,可以通過它在請(qǐng)求發(fā)起之前和收到響應(yīng)數(shù)據(jù)之后做一些預(yù)處理。 Fly.js 是一個(gè)功能強(qiáng)大的輕量級(jí)的javascript http請(qǐng)求庫,同時(shí)支持瀏覽器和node環(huán)境,通過適配器,它可以運(yùn)行在任何具有網(wǎng)絡(luò)能力的javascript運(yùn)行環(huán)境;同時(shí)fly.js有一些高級(jí)的玩法如全局ajax攔截、在web a...
摘要:二跨域解決方案原理利用標(biāo)簽沒有跨域限制的漏洞,網(wǎng)頁可以得到從其他來源動(dòng)態(tài)產(chǎn)生的數(shù)據(jù)。使用反向代理實(shí)現(xiàn)跨域,是最簡單的跨域方式。 前言 前后端數(shù)據(jù)交互經(jīng)常會(huì)碰到請(qǐng)求跨域,什么是跨域,以及有哪幾種跨域方式,這是本文要探討的內(nèi)容。 本文完整的源代碼請(qǐng)猛戳github博客,紙上得來終覺淺,建議動(dòng)手敲敲代碼 一、什么是跨域? 1.什么是同源策略及其限制內(nèi)容? 同源策略是一種約定,它是瀏覽器最核心...
摘要:二跨域解決方案原理利用標(biāo)簽沒有跨域限制的漏洞,網(wǎng)頁可以得到從其他來源動(dòng)態(tài)產(chǎn)生的數(shù)據(jù)。使用反向代理實(shí)現(xiàn)跨域,是最簡單的跨域方式。 前言 前后端數(shù)據(jù)交互經(jīng)常會(huì)碰到請(qǐng)求跨域,什么是跨域,以及有哪幾種跨域方式,這是本文要探討的內(nèi)容。 本文完整的源代碼請(qǐng)猛戳github博客,紙上得來終覺淺,建議動(dòng)手敲敲代碼 一、什么是跨域? 1.什么是同源策略及其限制內(nèi)容? 同源策略是一種約定,它是瀏覽器最核心...
摘要:引言前端開發(fā)經(jīng)常需要等待后端的接口,嚴(yán)重影響了開發(fā)效率,我們一般采用方式來避免這個(gè)問題。可能會(huì)涉及到門技術(shù),分別是服務(wù)端技術(shù)隨機(jī)生成特定格式數(shù)據(jù)的技術(shù)請(qǐng)求轉(zhuǎn)發(fā)請(qǐng)求攔截。 引言 前端開發(fā)經(jīng)常需要等待后端的接口,嚴(yán)重影響了開發(fā)效率,我們一般采用mock方式來避免這個(gè)問題。本人參考了大量文章,結(jié)合自己的經(jīng)驗(yàn),給出自己在mock上的一些理解。 1. 原理 何為mock,我認(rèn)為mock主要就是通...
閱讀 1148·2021-09-22 15:43
閱讀 2345·2021-09-22 15:32
閱讀 4455·2021-09-22 15:11
閱讀 2187·2019-08-30 15:55
閱讀 2564·2019-08-30 15:54
閱讀 984·2019-08-30 15:44
閱讀 1095·2019-08-29 13:26
閱讀 794·2019-08-29 12:54