成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

其實(shí)我只想設(shè)置客戶端實(shí)現(xiàn)跨域請求

Lucky_Boy / 2131人閱讀

摘要:本地也可以輕松模擬跨域請求,以及解決跨域請求的方式輕松實(shí)現(xiàn)本地服務(wù)器跨域請求請求接口,其實(shí)它們都在相同的本地服務(wù)器目錄下以訪問頁面,可是這個(gè)頁面調(diào)用的接口地址是與域名不同,也即跨域解決跨域請求服務(wù)器端設(shè)置這樣就能輕松實(shí)現(xiàn)跨域請求

本地也可以輕松模擬跨域請求,以及解決跨域請求的方式
1、輕松實(shí)現(xiàn)本地服務(wù)器跨域請求

web.html請求接口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))

localhost127.0.0.1域名不同,也即跨域

2、解決跨域請求(服務(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)跨域請求)

3、解決跨域請求(服務(wù)器端設(shè)置Access-Control-Allow-Origin:http://localhost

(服務(wù)器端設(shè)置響應(yīng)頭 Access-Control-Allow-origin: *,允許了任何來源origin的訪問,其實(shí)這個(gè)地方可以設(shè)置和請求頭相同的origin的值,只是這樣設(shè)置太麻煩了,本地測試需要服務(wù)端設(shè)置一次,如果本地測試同一個(gè)接口由多人請求,還要設(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ā)起該請求,會在請求頭里自動設(shè)置origin字段值為當(dāng)前頁面,如:origin:http://localhost


//php
//服務(wù)器端設(shè)置和origin相同的值
header("Access-Control-Allow-Origin:localhost");
echo "{"name": "lofayo"}";

(雖然能實(shí)現(xiàn),一個(gè)接口從測試到上線需要服務(wù)器端多次設(shè)置,太麻煩了)

4、跨域請求jsonp(理解jsonp原理)

jsonp的實(shí)現(xiàn)分三步走:

1、本地js定義好回調(diào)函數(shù)

2、創(chuà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、跨域請求自我暢想(設(shè)置請求頭里origin字段值和服務(wù)器相同)

所有上述跨域請求,都需要服務(wù)器端的參與設(shè)置,叨擾別人的事終究還是麻煩了些。想實(shí)現(xiàn)的是,即使服務(wù)器端不允許跨域,但是僅僅在客戶端設(shè)置依然能夠?qū)崿F(xiàn)的跨域請求

比如:接口數(shù)據(jù)在http://127.0.0.1/cors/php.php

訪問頁面地址為:http://localhost/cors/web.html,該頁面請求的接口,瀏覽器會在請求頭里默認(rèn)設(shè)置:

Origin:http://localhost
Referer:http://localhost/cors/web.html

既然如此,我只需要手動模擬origin字段值,把他設(shè)置為和服務(wù)器相同的域不就可以了,設(shè)置origin字段值:

Origin:http://127.0.0.1

可事與愿違,在http請求里設(shè)置不了該字段的值

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/94929.html

相關(guān)文章

  • 20K前端大佬面試(關(guān)于如何回答ajax跨域問題)

    摘要:在接觸前端開發(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請求跨域(ajax跨域只是屬于瀏覽器同源策略中的一部分,其它的這里不做介紹),內(nèi)容...

    Yangyang 評論0 收藏0
  • 爬取博客園首頁數(shù)據(jù)進(jìn)行數(shù)據(jù)分析

    摘要:目標(biāo)選取了博客園,爬取了首頁的前頁文章,但是數(shù)據(jù)放在那一直沒去分析。為了避免對博客園造成壓力,爬蟲代碼不公開。注數(shù)據(jù)來源是年月日至月的博客園首頁文章。誰是博客園最愛的用戶最愛的用戶,在這里是按文章上首頁的數(shù)量來判斷的。 前言 之前折騰了一小段時(shí)間scrapy,覺得使用起來異常簡單,然后打算練練手。目標(biāo)選取了博客園,爬取了首頁的前200頁文章,但是數(shù)據(jù)放在那一直沒去分析。趁著現(xiàn)在有閑心,...

    zilu 評論0 收藏0
  • 賺錢:停更是不可能停的,但是有時(shí)候你不得不停。

    摘要:,在互聯(lián)網(wǎng)上賺錢,沒有所謂的工作日,沒有所謂的休息日。任何一個(gè)項(xiàng)目沒有賺到錢之前,即使做不到,是一個(gè)必須的狀態(tài)。但是很多人舍不得,或者不懂得如何拼時(shí)間和精力。最典型的一個(gè)人,他一直認(rèn)為們之所以不能成功,是因?yàn)樗麄儾粔蚺Α? ...

    Cristic 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<