国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關(guān)于Laravel下Cors跨域POST請(qǐng)求的一種實(shí)現(xiàn)方法

WelliJhon / 3691人閱讀

摘要:對(duì)于在中的實(shí)現(xiàn)需要在項(xiàng)目中加入一個(gè)中間件,對(duì)于簡(jiǎn)單請(qǐng)求,比如請(qǐng)求,在路由中加入該中間件即可。

之前做了一個(gè)公司的內(nèi)部管理系統(tǒng),現(xiàn)在希望通過在釘釘上開發(fā)一個(gè)小應(yīng)用查看相關(guān)數(shù)據(jù),在此過程中涉及了HTTP的跨域請(qǐng)求的問題,在了解相關(guān)信息后,打算基于CORS實(shí)現(xiàn)。關(guān)于CORS(跨域資源共享),見這篇文章。
CORS中,對(duì)于簡(jiǎn)單請(qǐng)求,只需在服務(wù)器進(jìn)行相關(guān)的字段驗(yàn)證后進(jìn)行響應(yīng)即可,主要是驗(yàn)證請(qǐng)求的來源及請(qǐng)求的方法等是否是服務(wù)器許可的。
而對(duì)于復(fù)雜請(qǐng)求,則瀏覽器會(huì)先發(fā)送一個(gè)options請(qǐng)求到服務(wù)器進(jìn)行驗(yàn)證,驗(yàn)證通過后,再發(fā)送用戶的請(qǐng)求。再options請(qǐng)求中,服務(wù)器會(huì)返回允許的請(qǐng)求源、請(qǐng)求方法及頭部字段等。

對(duì)于CORS在Laravel中的實(shí)現(xiàn)需要在項(xiàng)目中加入一個(gè)中間件Cors,

 "POST, GET, OPTIONS, PUT, DELETE",
            "Access-Control-Allow-Headers"=> "Content-Type, X-Auth-Token, Origin"
        ];

        $response = $next($request);
        foreach($headers as $key => $value) 
            $response->header($key, $value);
        return $response;
    }
}

對(duì)于簡(jiǎn)單請(qǐng)求,比如get請(qǐng)求,在路由中加入該中間件即可。
但對(duì)于復(fù)雜請(qǐng)求,則處理不了。(根據(jù)文檔,POST請(qǐng)求滿足某些條件是才是復(fù)雜請(qǐng)求,但不知道為何,我發(fā)出的POST請(qǐng)求都是復(fù)雜請(qǐng)求,即瀏覽器首先會(huì)觸發(fā)一次options請(qǐng)求,再提交客戶的實(shí)際請(qǐng)求)。
對(duì)于只是采取與簡(jiǎn)單請(qǐng)求相同的方法,則對(duì)于復(fù)雜請(qǐng)求無法正確響應(yīng)。

以下是GET請(qǐng)求的請(qǐng)求-響應(yīng)信息:

以下是POST請(qǐng)求的響應(yīng):

可見POST請(qǐng)求中,瀏覽器先進(jìn)行了OPTIONS請(qǐng)求,但該請(qǐng)求的響應(yīng)中,并沒有GET響應(yīng)中的

Access-Control-Allow-Headers:Content-Type, X-Auth-Token, Origin
Access-Control-Allow-Methods:POST, GET, OPTIONS, PUT, DELETE
Access-Control-Allow-Origin:*

等跨域控制字段。

通過查詢資料,Laravel對(duì)于OPTIONS請(qǐng)求會(huì)自動(dòng)常規(guī)響應(yīng)200。所以缺少必要的頭部信息。
所以,我通過在路由中專門加入一個(gè)處理options的路由

Route::options("cors/test",function(){
    return response("ok")
                         ->header("Access-Control-Allow-Methods","POST, GET, OPTIONS, PUT, DELETE")
                         ->header("Access-Control-Allow-Headers","Content-Type, X-Auth-Token, Origin");
})->middleware("cors");

即保證了OPTIONS響應(yīng)了必要的頭部信息。
但該方法需要關(guān)閉Laravel中相應(yīng)路由的CSRF功能,具體在AppHttpMiddlewareVerifyCsrfToken添加

protected $except = [
        "cors/*"
    ];

雖然解決了問題,但對(duì)于其中的很多細(xì)節(jié)還是不了解,需要進(jìn)一步學(xué)習(xí)。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/22541.html

相關(guān)文章

  • 關(guān)于LaravelCors跨域POST請(qǐng)求一種實(shí)現(xiàn)方法

    摘要:對(duì)于在中的實(shí)現(xiàn)需要在項(xiàng)目中加入一個(gè)中間件,對(duì)于簡(jiǎn)單請(qǐng)求,比如請(qǐng)求,在路由中加入該中間件即可。 之前做了一個(gè)公司的內(nèi)部管理系統(tǒng),現(xiàn)在希望通過在釘釘上開發(fā)一個(gè)小應(yīng)用查看相關(guān)數(shù)據(jù),在此過程中涉及了HTTP的跨域請(qǐng)求的問題,在了解相關(guān)信息后,打算基于CORS實(shí)現(xiàn)。關(guān)于CORS(跨域資源共享),見這篇文章。CORS中,對(duì)于簡(jiǎn)單請(qǐng)求,只需在服務(wù)器進(jìn)行相關(guān)的字段驗(yàn)證后進(jìn)行響應(yīng)即可,主要是驗(yàn)證請(qǐng)求的來...

    mozillazg 評(píng)論0 收藏0
  • 【日常填坑】之a(chǎn)jax請(qǐng)求laravel的api接口

    摘要:合適和夠用是最完美的追求。比如從頁面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...

    Arno 評(píng)論0 收藏0
  • 【日常填坑】之a(chǎn)jax請(qǐng)求laravel的api接口

    摘要:合適和夠用是最完美的追求。比如從頁面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...

    neu 評(píng)論0 收藏0
  • 【日常填坑】之a(chǎn)jax請(qǐng)求laravel的api接口

    摘要:合適和夠用是最完美的追求。比如從頁面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...

    fuyi501 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<