詳解laravel如何開啟跨域功能
laravel如何開啟跨域功能?本文主要為大家介紹了關於laravel如何開啟跨域功能的相關資料,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。希望對大家有幫助。
前言
本文主要介紹了關於laravel開啟跨域功能的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。
跨域的請求
出於安全性的原因,瀏覽器會限制 Script 中的跨域請求。由於 XMLHttpRequest 遵循同源策略,所有使用 XMLHttpRequest 建構 HTTP 請求的應用只能存取自己的域名,如果需要建構跨域的請求,那麼開發者需要配合瀏覽器做出一些允許跨域的配置。
W3C 應用程式工作小組推薦了一種跨資源共享的機制,這種機制讓Web 應用伺服器能支援跨站存取控制,從而使得安全的進行跨站資料傳輸成為可能,該機制透過幾種方式來對原有模式進行了擴展:
回應的頭部應該追加Access-Control-Allow-Orign,用來表明哪些請求來源被允許存取資源內容
瀏覽器會對請求來源和回應中的值進行匹配驗證
#對於跨網域的請求,瀏覽器會預先傳送一個非簡單方式的請求,來判斷給定資源是否準備接受跨域資源存取
服務端應用程式透過檢查請求頭部的Orign 來判定請求是否跨域。
跨來源資源共享標準
#跨來源資源共享標準透過新增一系列HTTP 頭,讓伺服器能聲明哪些來源可以透過瀏覽器存取該伺服器上的資源。另外,對哪些會對伺服器資料造成破壞性回應的HTTP 請求方法(特別是GET 以外的HTTP 方法,或搭配某些MIME 類型的POST 請求),標準強烈要求瀏覽器必須先以OPTIONS 請求方式傳送一個預請求(preflight request),從而取得知伺服器端對跨來源請求所支援HTTP 方法。在確認伺服器允許跨來源請求的情況下,以實際的 HTTP 請求方法傳送那個真正的請求。伺服器端也可以通知客戶端,是否需要隨同請求一起傳送信用資訊(包括 Cookies 和 HTTP 認證相關資料)。
跨來源共用標準需要瀏覽器和服務端共同配合才能完成,目前瀏覽器廠商已經可以將請求部分自動完成,所以跨來源資源存取的重點還是在於伺服器端。
下面列出一些標準中可用的回應頭和請求頭。
Response Header
#Access-Control-Allow-Origin : 指明哪些請求來源被允許存取資源,值可以為"*", "null",或單一來源位址。
Access-Control-Allow-Credentials : 指明當請求中省略 creadentials 識別時回應是否暴露。對於預先請求來說,它表明實際的請求中可以包含使用者憑證。
Access-Control-Expose-Headers : 指明哪些頭資訊可以安全的暴露給 CORS API 規範的 API。
Access-Control-Max-Age : 指明預先要求可以在預先要求快取中存放多久。
Access-Control-Allow-Methods : 對於預先要求來說,哪些請求方式可以用於實際的請求。
Access-Control-Allow-Headers : 對於預先要求來說,指明了哪些頭資訊可以用於實際的請求中。
Origin : 指明預先要求或跨域請求的來源。
Access-Control-Request-Method : 對於預先請求來說,指明哪些預請求中的請求方式可以用在實際的請求中。
Access-Control-Request-Headers : 指明預先要求中的哪些頭資訊可以用於實際的請求中。
Request Header
#Origin : 表示傳送請求或預先要求的來源。
Access-Control-Request-Method : 在傳送預先要求時帶該請求頭,表示實際的請求將使用的請求方式。
Access-Control-Request-Headers : 在傳送預先要求時帶有該請求頭,表示實際的請求將攜帶的請求頭。
中間件
在Laravel 中允許跨域請求,我們可以建立一個追加回應的中間件,用來添加專門處理跨網域的請求的回應頭:
<?php namespace App\Http\Middleware; use Closure; use Response; class EnableCrossRequestMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); $response->header('Access-Control-Allow-Origin', config('app.allow')); $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, Accept'); $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS'); $response->header('Access-Control-Allow-Credentials', 'true'); return $response; } }
其中有以下需要注意的地方:
對於跨網域訪問並需要伴隨認證資訊的請求,需要在XMLHttpRequest 實例中指定withCredentials 為true。
這個中間件你可以根據自己的需求進行構建,如果需要在請求中伴隨認證資訊(包含cookie,session)那麼你就需要指定Access-Control-Allow-Credentials 為true,因為對於預請求來說如果你未指定該回應頭,那麼瀏覽器會直接忽略該回應。
在回應中指定Access-Control-Allow-Credentials 為true 時,Access-Control-Allow-Origin 無法指定為*
後置中間件只有在正常響應時才會被追加響應頭,而如果出現異常,這時響應是不會經過中間件的。
相關推薦:
#######詳解修改Laravel中url()的根位址##### #####以上是詳解laravel如何開啟跨域功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

LaravelEloquent模型檢索:輕鬆獲取數據庫數據EloquentORM提供了簡潔易懂的方式來操作數據庫。本文將詳細介紹各種Eloquent模型檢索技巧,助您高效地從數據庫中獲取數據。 1.獲取所有記錄使用all()方法可以獲取數據庫表中的所有記錄:useApp\Models\Post;$posts=Post::all();這將返回一個集合(Collection)。您可以使用foreach循環或其他集合方法訪問數據:foreach($postsas$post){echo$post->

PowerToys是微軟推出的免費工具集合,旨在提升Windows用戶的生產力和系統控制。它通過獨立模塊提供功能,如FancyZones管理窗口佈局和PowerRename批量重命名文件,使用戶工作流程更順暢。

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

利用地理空間技術高效處理700萬條記錄並創建交互式地圖本文探討如何使用Laravel和MySQL高效處理超過700萬條記錄,並將其轉換為可交互的地圖可視化。初始挑戰項目需求:利用MySQL數據庫中700萬條記錄,提取有價值的見解。許多人首先考慮編程語言,卻忽略了數據庫本身:它能否滿足需求?是否需要數據遷移或結構調整? MySQL能否承受如此大的數據負載?初步分析:需要確定關鍵過濾器和屬性。經過分析,發現僅少數屬性與解決方案相關。我們驗證了過濾器的可行性,並設置了一些限制來優化搜索。地圖搜索基於城

Laravel是如何在後端邏輯中發揮作用的?它通過路由系統、EloquentORM、認證與授權、事件與監聽器以及性能優化來簡化和增強後端開發。 1.路由系統允許定義URL結構和請求處理邏輯。 2.EloquentORM簡化數據庫交互。 3.認證與授權系統便於用戶管理。 4.事件與監聽器實現松耦合代碼結構。 5.性能優化通過緩存和隊列提高應用效率。

在使用CraftCMS開發網站時,常常會遇到資源文件緩存的問題,特別是當你頻繁更新CSS和JavaScript文件時,舊版本的文件可能仍然被瀏覽器緩存,導致用戶無法及時看到最新的更改。這個問題不僅影響用戶體驗,還會增加開發和調試的難度。最近,我在項目中遇到了類似的困擾,經過一番探索,我找到了wiejeben/craft-laravel-mix這個插件,它完美地解決了我的緩存問題。

Laravel 提供了一個全面的 Auth 框架,用於實現用戶登錄功能,包括:定義用戶模型(Eloquent 模型)創建登錄表單(Blade 模板引擎)編寫登錄控制器(繼承 Auth\LoginController)驗證登錄請求(Auth::attempt)登錄成功後重定向(redirect)考慮安全因素:哈希密碼、防 CSRF 保護、速率限制和安全標頭。此外,Auth 框架還提供重置密碼、註冊和驗證電子郵件等功能。詳情請參閱 Laravel 文檔:https://laravel.com/doc

在面向初学者的 Laravel 框架版本选择指南中,本文深入探討了 Laravel 的版本差異,旨在協助初學者在眾多版本之間做出明智的選擇。我們將重點介紹每個版本的關鍵特徵、比較它們的優缺點,並提供有用的建議,幫助新手根據他們的技能水準和項目需求挑選最合適的 Laravel 版本。對於初學者來說,選擇一個合適的 Laravel 版本至關重要,因為它可以顯著影響他們的學習曲線和整體開發體驗。
