最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

THINKPHP跨域報錯的解決方案

 更新時間:2024年03月06日 10:26:04   作者:yuanzelin8  
這篇文章主要介紹了THINKPHP跨域報錯has been blocked by CORS policy: Response to preflight request doesn't pass access control check的解決方案,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下

報錯:has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

環(huán)境:thinkphp6 +nginx

今天和VUE配合調(diào)用接口的時候發(fā)現(xiàn)跨域報錯。

參考

跨域請求 · ThinkPHP5.1完全開發(fā)手冊 · 看云

中間件 · ThinkPHP6.0完全開發(fā)手冊 · 看云

按照官網(wǎng)給出的例子,在中間件配置允許跨域

<?php
 
// 中間件配置
 
use think\middleware\AllowCrossDomain;
 
return [
    AllowCrossDomain::class
];
 

前端請求偶爾還是會出現(xiàn)了跨域請求提示

Access to XMLHttpRequest at from origin has been blocked by CORS policy: 
Request header field x-token is not allowed by 
Access-Control-Allow-Headers in preflight response.

php在批量導入excel數(shù)據(jù)更新時偶爾會出現(xiàn)這個問題,出現(xiàn)時間不定,中間件都配置了跨域還是不行。

新建一個自定義的跨域中間件

<?php
 
namespace app\middleware;
use think\middleware\AllowCrossDomain;
 
 
class AllowCrossDomainMiddleware extends AllowCrossDomain
{
    // 加入自定義請求頭參數(shù) X-Token
    protected $header = [
        'Access-Control-Allow-Credentials' => 'true',
        'Access-Control-Max-Age'           => 1800,
        'Access-Control-Allow-Methods'     => 'GET, POST, PATCH, PUT, DELETE, OPTIONS',
        'Access-Control-Allow-Headers'     => 'Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-CSRF-TOKEN, X-Requested-With, X-Token',
    ];
}

重新配置中間件

<?php
 
// 中間件配置
 
use think\middleware\AllowCrossDomain;
use app\middleware\AllowCrossDomainMiddleware;
 
return [
    // 不使用默認的跨域中間件
    // AllowCrossDomain::class
 
    // 使用自定義跨域中間件
    AllowCrossDomainMiddleware::class
];
 

中間件,入口文件、路由都折騰了好幾遍不行。

最后解決辦法:

可以在入口文件添加以下代碼,單獨處理options請求

public/index.php

// 添加允許跨域請求頭
header("'Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-CSRF-TOKEN, X-Requested-With, X-Token");
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, PATCH');
 
// 處理 OPTIONS 請求
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    exit;
}

以上就是THINKPHP跨域報錯的解決方案的詳細內(nèi)容,更多關于THINKPHP跨域報錯的資料請關注腳本之家其它相關文章!

相關文章

最新評論

竹北市| 日喀则市| 张掖市| 吉木萨尔县| 分宜县| 礼泉县| 交口县| 陕西省| 永顺县| 龙州县| 芦山县| 文昌市| 尚志市| 全椒县| 舞钢市| 沙坪坝区| 鄯善县| 青铜峡市| 马龙县| 巴马| 景宁| 贡觉县| 喜德县| 霍山县| 潞西市| 四会市| 云梦县| 嘉兴市| 临江市| 澄江县| 苏尼特左旗| 长治市| 尼勒克县| 云阳县| 扎兰屯市| 和田县| 乌拉特中旗| 海兴县| 平南县| 阿鲁科尔沁旗| 大埔区|