首頁  >  文章  >  php框架  >  一文詳解thinkphp6如何透過全域中間件解決跨域問題

一文詳解thinkphp6如何透過全域中間件解決跨域問題

藏色散人
藏色散人轉載
2021-09-19 16:49:574619瀏覽

下面thinkphp框架教學欄位將介紹thinkphp6如何透過全域中間件解決跨域問題,希望對需要的朋友有幫助!

tp6 透過全域中間件 解決跨域問題

tp6官網有提供跨域決絕方法,當我直接使用無法使用。 (可能我用的姿勢不對)。

前端在Hbuildert中發送ajax請求,發生跨域。

get請求:可以透過背景設定解決。
'Access-Control-Allow-Origin: *'。
post請求:會發生OPTIONS請求。在ajax請求中加入一個header頭資訊。
header:{
    'Content-Type':'application/x-www-form-urlencoded'
}

定義中間件

<?php declare (strict_types = 1);

namespace app\middleware;
use think\Response;

/**
 * 全局跨域请求处理
 * Class CrossDomain
 * @package app\middleware
 */

class CrossDomain
{
    public function handle($request, \Closure $next)
    {
        header(&#39;Access-Control-Allow-Origin: *&#39;);
        header(&#39;Access-Control-Max-Age: 1800&#39;);
        header(&#39;Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE&#39;);
        header(&#39;Access-Control-Allow-Headers: Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-CSRF-TOKEN, X-Requested-With, Token&#39;);
        if (strtoupper($request->method()) == "OPTIONS") {
            return Response::create()->send();
        }

        return $next($request);
    }
}

在middleware.php中加入我們定義的中間件

一文詳解thinkphp6如何透過全域中間件解決跨域問題

##然後跨域就好使了!

以上是一文詳解thinkphp6如何透過全域中間件解決跨域問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除