摘要:本地也可以輕松模擬跨域請(qǐng)求,以及解決跨域請(qǐng)求的方式輕松實(shí)現(xiàn)本地服務(wù)器跨域請(qǐng)求請(qǐng)求接口,其實(shí)它們都在相同的本地服務(wù)器目錄下以訪問頁面,可是這個(gè)頁面調(diào)用的接口地址是與域名不同,也即跨域解決跨域請(qǐng)求服務(wù)器端設(shè)置這樣就能輕松實(shí)現(xiàn)跨域請(qǐng)求
本地也可以輕松模擬跨域請(qǐng)求,以及解決跨域請(qǐng)求的方式1、輕松實(shí)現(xiàn)本地服務(wù)器跨域請(qǐng)求
web.html請(qǐng)求接口json.json,其實(shí)它們都在相同的本地服務(wù)器目錄下
以localhost/cors/web.html訪問頁面,可是這個(gè)頁面調(diào)用的接口地址是http://127.0.0.1/cors/json.json
var url = "http://127.0.0.1/cors/json.json" fetch(url) .then(res => res.json()) .then(resJson => console.log(resJson))
localhost 與127.0.0.1域名不同,也即跨域
2、解決跨域請(qǐng)求(服務(wù)器端設(shè)置Access-Control-Allow-Origin:*)//js var url = "http://127.0.0.1/cors/php.php" fetch(url) .then(res => res.json()) .then(resJson => console.log(resJson)) //php header("Access-Control-Allow-Origin:*"); echo "{"name": "lofayo"}";
(這樣就能輕松實(shí)現(xiàn)跨域請(qǐng)求)
3、解決跨域請(qǐng)求(服務(wù)器端設(shè)置Access-Control-Allow-Origin:http://localhost)(服務(wù)器端設(shè)置響應(yīng)頭 Access-Control-Allow-origin: *,允許了任何來源origin的訪問,其實(shí)這個(gè)地方可以設(shè)置和請(qǐng)求頭相同的origin的值,只是這樣設(shè)置太麻煩了,本地測(cè)試需要服務(wù)端設(shè)置一次,如果本地測(cè)試同一個(gè)接口由多人請(qǐng)求,還要設(shè)置多次,正式上線了還要設(shè)置一次,太麻煩了)
//js http://localhost/cors/web.html var url = "http://127.0.0.1/cors/php.php" fetch(url) .then(res => res.json()) .then(resJson => console.log(resJson)) //發(fā)起該請(qǐng)求,會(huì)在請(qǐng)求頭里自動(dòng)設(shè)置origin字段值為當(dāng)前頁面,如:origin:http://localhost //php //服務(wù)器端設(shè)置和origin相同的值 header("Access-Control-Allow-Origin:localhost"); echo "{"name": "lofayo"}";
(雖然能實(shí)現(xiàn),一個(gè)接口從測(cè)試到上線需要服務(wù)器端多次設(shè)置,太麻煩了)
4、跨域請(qǐng)求jsonp(理解jsonp原理)jsonp的實(shí)現(xiàn)分三步走:
1、本地js定義好回調(diào)函數(shù)
2、創(chuàng)建可以跨域請(qǐng)求的script標(biāo)簽,其實(shí)src即為帶了回調(diào)函數(shù)查詢參數(shù)的接口url
3、在php的接口文件里獲取回調(diào)函數(shù),并返回由回調(diào)函數(shù)包裹數(shù)據(jù)的整體
//1、定義好接收數(shù)據(jù)的函數(shù) //2、通過script標(biāo)簽的src實(shí)現(xiàn)跨域,只是這個(gè)url帶有查詢參數(shù)(回調(diào)函數(shù)) //php文件接收查詢參數(shù),并返回由回調(diào)函數(shù)包裹數(shù)據(jù)的整體 $requstName = $_GET["callback"]; $data = "{"name": "lofayo"}"; echo $requstName . "(" . $data . ")";5、跨域請(qǐng)求自我暢想(設(shè)置請(qǐng)求頭里origin字段值和服務(wù)器相同)
所有上述跨域請(qǐng)求,都需要服務(wù)器端的參與設(shè)置,叨擾別人的事終究還是麻煩了些。想實(shí)現(xiàn)的是,即使服務(wù)器端不允許跨域,但是僅僅在客戶端設(shè)置依然能夠?qū)崿F(xiàn)的跨域請(qǐng)求
比如:接口數(shù)據(jù)在http://127.0.0.1/cors/php.php
訪問頁面地址為:http://localhost/cors/web.html,該頁面請(qǐng)求的接口,瀏覽器會(huì)在請(qǐng)求頭里默認(rèn)設(shè)置:
Origin:http://localhost Referer:http://localhost/cors/web.html
既然如此,我只需要手動(dòng)模擬origin字段值,把他設(shè)置為和服務(wù)器相同的域不就可以了,設(shè)置origin字段值:
Origin:http://127.0.0.1
可事與愿違,在http請(qǐng)求里設(shè)置不了該字段的值
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94929.html
摘要:在接觸前端開發(fā)起,跨域這個(gè)詞就一直以很高的頻率在我們學(xué)習(xí)工作中重復(fù)出現(xiàn),最近在工作中遇到了跨域的相關(guān)問題,這里我把它總結(jié)記錄一下。 在接觸前端開發(fā)起,跨域這個(gè)詞就一直以很高的頻率在我們學(xué)習(xí)工作中重復(fù)出現(xiàn),最近在工作中遇到了跨域的相關(guān)問題,這里我把它總結(jié)記錄一下。關(guān)于跨域,有N種類型,現(xiàn)在我只專注于ajax請(qǐng)求跨域(ajax跨域只是屬于瀏覽器同源策略中的一部分,其它的這里不做介紹),內(nèi)容...
摘要:目標(biāo)選取了博客園,爬取了首頁的前頁文章,但是數(shù)據(jù)放在那一直沒去分析。為了避免對(duì)博客園造成壓力,爬蟲代碼不公開。注數(shù)據(jù)來源是年月日至月的博客園首頁文章。誰是博客園最愛的用戶最愛的用戶,在這里是按文章上首頁的數(shù)量來判斷的。 前言 之前折騰了一小段時(shí)間scrapy,覺得使用起來異常簡(jiǎn)單,然后打算練練手。目標(biāo)選取了博客園,爬取了首頁的前200頁文章,但是數(shù)據(jù)放在那一直沒去分析。趁著現(xiàn)在有閑心,...
摘要:,在互聯(lián)網(wǎng)上賺錢,沒有所謂的工作日,沒有所謂的休息日。任何一個(gè)項(xiàng)目沒有賺到錢之前,即使做不到,是一個(gè)必須的狀態(tài)。但是很多人舍不得,或者不懂得如何拼時(shí)間和精力。最典型的一個(gè)人,他一直認(rèn)為們之所以不能成功,是因?yàn)樗麄儾粔蚺Α? ...
閱讀 1295·2021-11-23 09:51
閱讀 3399·2021-09-06 15:00
閱讀 987·2021-08-16 10:57
閱讀 1370·2019-08-30 12:46
閱讀 933·2019-08-29 12:22
閱讀 1603·2019-08-29 11:07
閱讀 3147·2019-08-26 11:23
閱讀 2980·2019-08-23 15:14