laravel開發(fā)中跨域的解決方案
前言
眾所周知我們大家在用 laravel 進(jìn)行開發(fā)的時(shí)候,特別是前后端完全分離的時(shí)候,由于前端項(xiàng)目運(yùn)行在自己機(jī)器的指定端口(也可能是其他人的機(jī)器) , 例如 localhost:8000 , 而 laravel 程序又運(yùn)行在另一個(gè)端口,這樣就跨域了,而由于瀏覽器的同源策略,跨域請(qǐng)求是非法的。其實(shí)這個(gè)問題很好解決,只需要添加一個(gè)中間件就可以了。下面話不多說了,來隨著小編一起看看詳細(xì)的解決方案吧。
解決方案:
1、新建一個(gè)中間件
php artisan make:middleware EnableCrossRequestMiddleware
2、書寫中間件內(nèi)容
<?php
namespace App\Http\Middleware;
use Closure;
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);
$origin = $request->server('HTTP_ORIGIN') ? $request->server('HTTP_ORIGIN') : '';
$allow_origin = [
'http://localhost:8000',
];
if (in_array($origin, $allow_origin)) {
$response->header('Access-Control-Allow-Origin', $origin);
$response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN');
$response->header('Access-Control-Expose-Headers', 'Authorization, authenticated');
$response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
$response->header('Access-Control-Allow-Credentials', 'true');
}
return $response;
}
}
$allow_origin 數(shù)組變量就是你允許跨域的列表了,可自行修改。
3、然后在內(nèi)核文件注冊(cè)該中間件
protected $middleware = [ // more App\Http\Middleware\EnableCrossRequestMiddleware::class, ];
在 App\Http\Kernel 類的 $middleware 屬性添加,這里注冊(cè)的中間件屬于全局中間件。
然后你就會(huì)發(fā)現(xiàn)前端頁面已經(jīng)可以發(fā)送跨域請(qǐng)求了。
會(huì)多出一次 method 為 options 的請(qǐng)求是正常的,因?yàn)闉g覽器要先判斷該服務(wù)器是否允許該跨域請(qǐng)求。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Uchome1.2 1.5 代碼學(xué)習(xí) common.php
這是uchome 用到的php代碼,大家在學(xué)習(xí)編程的時(shí)候,可以看下當(dāng)時(shí)比較成熟的一些cms系統(tǒng),前提是你對(duì)程序比較熟悉啊,要不看了會(huì)打消學(xué)習(xí)積極性的。2009-04-04
WordPress中設(shè)置Post Type自定義文章類型的實(shí)例教程
這篇文章主要介紹了WordPress中設(shè)置Post Type自定義文章類型的實(shí)例教程,后臺(tái)文章類型的設(shè)置是WordPress的一大特色,然而自帶的文章類型往往并不夠用,需要的朋友可以參考下2016-05-05
php實(shí)現(xiàn)文章評(píng)論系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)文章評(píng)論系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
基于curl數(shù)據(jù)采集之單頁面采集函數(shù)get_html的使用
在做數(shù)據(jù)采集時(shí)經(jīng)常要使用到curl+正則的方式采集需要的數(shù)據(jù) 根據(jù)自己的工作經(jīng)驗(yàn) 把自己寫的一些常用自定義函數(shù) 與大家來分享 如果有寫得不恰當(dāng)?shù)牡胤?請(qǐng)多多指教2013-04-04
php 使用fopen函數(shù)創(chuàng)建、打開文件詳解及實(shí)例代碼
這篇文章主要介紹了php 使用fopen函數(shù)創(chuàng)建、打開文件詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-09-09

