ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp6 がグローバル ミドルウェアを通じてクロスドメインの問題を解決する方法について詳しく説明した記事

thinkphp6 がグローバル ミドルウェアを通じてクロスドメインの問題を解決する方法について詳しく説明した記事

藏色散人
藏色散人転載
2021-09-19 16:49:574619ブラウズ

次のthinkphp フレームワークチュートリアル コラムでは、thinkphp6 がグローバル ミドルウェアを通じてクロスドメインの問題をどのように解決するかを紹介します。

tp6 グローバルミドルウェアによるクロスドメインの問題の解決

tp6 公式 Web サイトにはクロスドメイン解決方法が提供されていますが、私が使用した場合は使用できません直接。 (私の姿勢が悪いのかもしれませんが)

フロントエンドが Hbuildert で ajax リクエストを送信し、クロスドメインが発生します。

Get request: バックグラウンド設定で解決できます。
'Access-Control-Allow-Origin: *'。
Post リクエスト: OPTIONS リクエストが発生します。 ajaxリクエストにヘッダー情報を追加します。
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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。