久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

laravel如何開啟跨域功能示例詳解

這篇文章主要給大家介紹了關(guān)于laravel如何開啟跨域功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來

前言

本文主要給大家介紹了關(guān)于laravel開啟跨域功能的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。

跨域的請(qǐng)求

出于安全性的原因,瀏覽器會(huì)限制 Script 中的跨域請(qǐng)求。由于 XMLHttpRequest 遵循同源策略,所有使用 XMLHttpRequest 構(gòu)造 HTTP 請(qǐng)求的應(yīng)用只能訪問自己的域名,如果需要構(gòu)造跨域的請(qǐng)求,那么開發(fā)者需要配合瀏覽器做出一些允許跨域的配置。

W3C 應(yīng)用工作組推薦了一種跨資源共享的機(jī)制,這種機(jī)制讓 Web 應(yīng)用服務(wù)器能支持跨站訪問控制,從而使得安全的進(jìn)行跨站數(shù)據(jù)傳輸成為可能,該機(jī)制通過幾種方式來對(duì)原有模式進(jìn)行了擴(kuò)展:

  • 響應(yīng)的頭部應(yīng)該追加 Access-Control-Allow-Orign,用來表明哪些請(qǐng)求源被允許訪問資源內(nèi)容
  • 瀏覽器會(huì)對(duì)請(qǐng)求源和響應(yīng)中的值進(jìn)行匹配驗(yàn)證
  • 對(duì)于跨域的請(qǐng)求,瀏覽器會(huì)預(yù)發(fā)送一個(gè)非簡(jiǎn)單方式的請(qǐng)求,來判斷給定資源是否準(zhǔn)備接受跨域資源訪問
  • 服務(wù)端應(yīng)用通過檢查請(qǐng)求頭部的 Orign 來判定請(qǐng)求是否跨域。

跨源資源共享標(biāo)準(zhǔn)

跨源資源共享標(biāo)準(zhǔn)通過新增一系列 HTTP 頭,讓服務(wù)器能聲明哪些來源可以通過瀏覽器訪問該服務(wù)器上的資源。另外,對(duì)哪些會(huì)對(duì)服務(wù)器數(shù)據(jù)造成破壞性響應(yīng)的 HTTP 請(qǐng)求方法(特別是 GET 以外的 HTTP 方法,或者搭配某些 MIME 類型的 POST 請(qǐng)求),標(biāo)準(zhǔn)強(qiáng)烈要求瀏覽器必須先以 OPTIONS 請(qǐng)求方式發(fā)送一個(gè)預(yù)請(qǐng)求(preflight request),從而獲取知服務(wù)器端對(duì)跨源請(qǐng)求所支持 HTTP 方法。在確認(rèn)服務(wù)器允許跨源請(qǐng)求的情況下,以實(shí)際的 HTTP 請(qǐng)求方法發(fā)送那個(gè)真正的請(qǐng)求。服務(wù)器端也可以通知客戶端,是不是需要隨同請(qǐng)求一起發(fā)送信用信息(包括 Cookies 和 HTTP 認(rèn)證相關(guān)數(shù)據(jù))。

跨源共享標(biāo)準(zhǔn)需要瀏覽器和服務(wù)端共同配合才能完成,目前瀏覽器廠商已經(jīng)可以將請(qǐng)求部分自動(dòng)完成,所以跨源資源訪問的重點(diǎn)還是在于服務(wù)器端。

下面列出一些標(biāo)準(zhǔn)中可用的響應(yīng)頭和請(qǐng)求頭。

Response Header

  • Access-Control-Allow-Origin : 指明哪些請(qǐng)求源被允許訪問資源,值可以為 "*","null",或者單個(gè)源地址。
  • Access-Control-Allow-Credentials : 指明當(dāng)請(qǐng)求中省略 creadentials 標(biāo)識(shí)時(shí)響應(yīng)是否暴露。對(duì)于預(yù)請(qǐng)求來說,它表明實(shí)際的請(qǐng)求中可以包含用戶憑證。
  • Access-Control-Expose-Headers : 指明哪些頭信息可以安全的暴露給 CORS API 規(guī)范的 API。
  • Access-Control-Max-Age : 指明預(yù)請(qǐng)求可以在預(yù)請(qǐng)求緩存中存放多久。
  • Access-Control-Allow-Methods : 對(duì)于預(yù)請(qǐng)求來說,哪些請(qǐng)求方式可以用于實(shí)際的請(qǐng)求。
  • Access-Control-Allow-Headers : 對(duì)于預(yù)請(qǐng)求來說,指明了哪些頭信息可以用于實(shí)際的請(qǐng)求中。
  • Origin : 指明預(yù)請(qǐng)求或者跨域請(qǐng)求的來源。
  • Access-Control-Request-Method : 對(duì)于預(yù)請(qǐng)求來說,指明哪些預(yù)請(qǐng)求中的請(qǐng)求方式可以被用在實(shí)際的請(qǐng)求中。
  • Access-Control-Request-Headers : 指明預(yù)請(qǐng)求中的哪些頭信息可以用于實(shí)際的請(qǐng)求中。

Request Header

  • Origin : 表明發(fā)送請(qǐng)求或預(yù)請(qǐng)求的來源。
  • Access-Control-Request-Method : 在發(fā)送預(yù)請(qǐng)求時(shí)帶該請(qǐng)求頭,表明實(shí)際的請(qǐng)求將使用的請(qǐng)求方式。
  • Access-Control-Request-Headers : 在發(fā)送預(yù)請(qǐng)求時(shí)帶有該請(qǐng)求頭,表明實(shí)際的請(qǐng)求將攜帶的請(qǐng)求頭。

中間件

在 Laravel 中允許跨域請(qǐng)求,我們可以構(gòu)建一個(gè)追加響應(yīng)的中間件,用來添加專門處理跨域的請(qǐng)求的響應(yīng)頭:

<?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;
 }

}

其中有以下需要注意的地方:

  • 對(duì)于跨域訪問并需要伴隨認(rèn)證信息的請(qǐng)求,需要在 XMLHttpRequest 實(shí)例中指定 withCredentials 為 true。
  • 這個(gè)中間件你可以根據(jù)自己的需求進(jìn)行構(gòu)建,如果需要在請(qǐng)求中伴隨認(rèn)證信息(包含 cookie,session)那么你就需要指定 Access-Control-Allow-Credentials 為 true, 因?yàn)閷?duì)于預(yù)請(qǐng)求來說如果你未指定該響應(yīng)頭,那么瀏覽器會(huì)直接忽略該響應(yīng)。
  • 在響應(yīng)中指定 Access-Control-Allow-Credentials 為 true 時(shí),Access-Control-Allow-Origin 不能指定為 *
  • 后置中間件只有在正常響應(yīng)時(shí)才會(huì)被追加響應(yīng)頭,而如果出現(xiàn)異常,這時(shí)響應(yīng)是不會(huì)經(jīng)過中間件的。

總結(jié)

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

下面小編就為大家分享一篇laravel ORM 只開啟created_at的幾種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要給大家介紹了如何通過源碼解析Laravel的依賴注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關(guān)于Laravel中unique和exists驗(yàn)證規(guī)則的優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面
最近在使用laravel5.5,利用其實(shí)現(xiàn)了一個(gè)功能,下面分享給大家,這篇文章主要給大家介紹了關(guān)于Laravel 5.5基于內(nèi)置的Auth模塊如何實(shí)現(xiàn)前后臺(tái)登陸的相關(guān)資料,文中通過示例代碼介紹的非
laravel 的隊(duì)列服務(wù)對(duì)各種不同的后臺(tái)隊(duì)列服務(wù)提供了統(tǒng)一的 API,下面這篇文章通過源碼分析給大家介紹了關(guān)于 Laravel 重復(fù)執(zhí)行同一個(gè)隊(duì)列任務(wù)的原因,文中通過示例代碼介紹的非常詳細(xì)
這篇文章主要給大家介紹了關(guān)于 Laravel Redis 多個(gè)進(jìn)程同時(shí)取隊(duì)列問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來
主站蜘蛛池模板: 日日操日日干 | 91精品国产一区二区三区香蕉 | 国产一区二区三区四区三区四 | 久久高清| 久久久久国产一级毛片高清网站 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 久久久久国产一区二区三区 | 亚洲一区二区三区视频 | 自拍 亚洲 欧美 老师 丝袜 | 成人av网站在线观看 | 国产精品www | 人人艹人人爽 | 日本午夜免费福利视频 | av日韩在线播放 | 艹逼网 | 久久久亚洲一区 | 日日操夜夜操天天操 | 亚洲精品视频在线播放 | 国产精品久久久久久吹潮 | 欧美日韩在线观看一区二区三区 | 国产午夜精品一区二区三区嫩草 | 亚洲精品久久久 | 黄色免费在线观看网站 | 国产精品一区二区欧美黑人喷潮水 | 免费在线观看成人 | 精品久久香蕉国产线看观看亚洲 | 亚洲国产一区二区在线 | 久久国产精品99久久久大便 | 国产激情视频网址 | 久久88 | 日韩一级免费观看 | 亚洲一区二区三区在线免费 | 五月天婷婷丁香 | 日日摸天天添天天添破 | 精品国产一区二区三区性色 | 性高朝久久久久久久3小时 av一区二区三区四区 | 91网在线观看 | 国产片侵犯亲女视频播放 | 国产成人精品一区二 | 中文二区 | 日韩成人在线观看 |