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

資訊專欄INFORMATION COLUMN

關于Laravel下Cors跨域POST請求的一種實現方法

mozillazg / 1688人閱讀

摘要:對于在中的實現需要在項目中加入一個中間件,對于簡單請求,比如請求,在路由中加入該中間件即可。

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

對于CORS在Laravel中的實現需要在項目中加入一個中間件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;
    }
}

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

以下是GET請求的請求-響應信息:

以下是POST請求的響應:

可見POST請求中,瀏覽器先進行了OPTIONS請求,但該請求的響應中,并沒有GET響應中的

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

等跨域控制字段。

通過查詢資料,Laravel對于OPTIONS請求會自動常規響應200。所以缺少必要的頭部信息。
所以,我通過在路由中專門加入一個處理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響應了必要的頭部信息。
但該方法需要關閉Laravel中相應路由的CSRF功能,具體在AppHttpMiddlewareVerifyCsrfToken添加

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

雖然解決了問題,但對于其中的很多細節還是不了解,需要進一步學習。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/82063.html

相關文章

  • 關于LaravelCors跨域POST請求一種實現方法

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

    WelliJhon 評論0 收藏0
  • 【日常填坑】之ajax請求laravel的api接口

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

    Arno 評論0 收藏0
  • 【日常填坑】之ajax請求laravel的api接口

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

    neu 評論0 收藏0
  • 【日常填坑】之ajax請求laravel的api接口

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

    fuyi501 評論0 收藏0

發表評論

0條評論

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