摘要:在路由中引用中間件有關(guān)跨域控制的更多知識(shí)請(qǐng)?jiān)L問(wèn)訪問(wèn)控制。鉆牛角尖如果需要對(duì)程序返回?cái)?shù)據(jù)作統(tǒng)一加工,都可以通過(guò)實(shí)現(xiàn)更靈活的響應(yīng)管理
做 json 接口的使用 JSON_UNESCAPED_UNICODE,能在返回大量非 ascii 字符數(shù)據(jù)的時(shí)候節(jié)約大量流量(其實(shí)就是把 uxxxx 轉(zhuǎn)換成人能看懂的中文)。在 Laravel 框架里最易懂的辦法就是用return response()->json($data, 200, [], JSON_UNESCAPED_UNICODE)返回接口數(shù)據(jù)。但是這種方法可復(fù)用性非常低,而且不太好處理 http 狀態(tài)碼問(wèn)題。作為一個(gè)喜歡裝牛逼的程序員,我需要研究一個(gè)看起來(lái)很牛逼的方法,我的目標(biāo)是高復(fù)用、低耦合。
經(jīng)過(guò)連續(xù)施展 Google 大法,遂得出以下方法:
1 php artisan make:middleware JsonCors建立中間件,然后在handle方法里加入下面的代碼:
$data = $next($request); if ($data instanceof IlluminateHttpJsonResponse) { $data->setEncodingOptions(JSON_UNESCAPED_UNICODE); // 下面是跨域控制代碼 $data->withHeaders([ "Access-Control-Allow-Origin" => "*", "Access-Control-Allow-Credentials" => "true", ]); } return $data;
2 修改app/Http/Kernel.php,在protected $routeMiddleware數(shù)組里加入"jsoncors" => AppHttpMiddlewareJsonCors::class,
然后在路由里引用test中間件即可。
3 在路由中引用中間件Route::middleware(["jsoncors"])
4 有關(guān)跨域控制的更多知識(shí)請(qǐng)?jiān)L問(wèn)HTTP訪問(wèn)控制(CORS)。
鉆牛角尖:
如果需要對(duì)程序返回?cái)?shù)據(jù)作統(tǒng)一加工,都可以通過(guò)middleware實(shí)現(xiàn)更靈活的響應(yīng)管理?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/30033.html
摘要:同源策略的控制者是瀏覽器,瀏覽器可以控制不同域之間的資源的訪問(wèn)或相互操作,但不控制自己對(duì)不同域之間的資源的操作和訪問(wèn)。 同源與跨域 一般情況下,禁止一個(gè)域從另一個(gè)域讀取數(shù)據(jù),卻可以使用某些從其他域拿到的資源。比如說(shuō),允許一個(gè)域執(zhí)行、渲染、應(yīng)用從其他域獲取到的腳本、圖片、樣式;同樣,一個(gè)域可以展示從其他域獲取的內(nèi)容,比如在frame中顯示html文檔。網(wǎng)絡(luò)資源也可以選擇性的讓其他域來(lái)讀取...
摘要:例如,為前兩個(gè)提供跨域的功能實(shí)現(xiàn),代碼參考如下控制器由于有了獨(dú)立的處理器,控制器層可以制作簡(jiǎn)單處理,僅需向控制器注入,并由提供的輔助方法返回?cái)?shù)據(jù)給前臺(tái),即可。 如何基于 Notadd 構(gòu)建 API Notadd 底層實(shí)現(xiàn)了 passport 機(jī)制,有統(tǒng)一的授權(quán)管理,主要支持兩種方式進(jìn)行 API 授權(quán),一個(gè)是 client,領(lǐng)一個(gè)是 passport,這個(gè)在其他文檔中有做詳細(xì)的說(shuō)明。 這...
摘要:跨域的請(qǐng)求出于安全性的原因,瀏覽器會(huì)限制中的跨域請(qǐng)求。跨源共享標(biāo)準(zhǔn)需要瀏覽器和服務(wù)端共同配合才能完成,目前瀏覽器廠商已經(jīng)可以將請(qǐng)求部分自動(dòng)完成,所以跨源資源訪問(wèn)的重點(diǎn)還是在于服務(wù)器端。指明預(yù)請(qǐng)求或者跨域請(qǐng)求的來(lái)源。 跨域的請(qǐng)求 出于安全性的原因,瀏覽器會(huì)限制 Script 中的跨域請(qǐng)求。由于 XMLHttpRequest 遵循同源策略,所有使用 XMLHttpRequest 構(gòu)造 HT...
摘要:合適和夠用是最完美的追求。比如從頁(yè)面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無(wú)狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開(kāi)發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開(kāi)發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...
摘要:合適和夠用是最完美的追求。比如從頁(yè)面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無(wú)狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開(kāi)發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開(kāi)發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...
閱讀 1824·2023-04-26 01:55
閱讀 1088·2021-09-30 09:47
閱讀 1683·2019-08-30 15:54
閱讀 749·2019-08-30 15:53
閱讀 701·2019-08-30 15:52
閱讀 1144·2019-08-30 15:44
閱讀 2418·2019-08-30 14:06
閱讀 1066·2019-08-29 16:39