THINKPHP 跨域報錯解決方案

報錯: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.

環境:thinkphp6 +nginx

今天和VUE配合調用接口的時候發現跨域報錯。

參考

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

中間件 · ThinkPHP6.0完全開發手冊 · 看云

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

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

前端請求偶爾還是會出現了跨域請求提示

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數據更新時偶爾會出現這個問題,出現時間不定,中間件都配置了跨域還是不行。

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

<?phpnamespace app\middleware;
use think\middleware\AllowCrossDomain;class AllowCrossDomainMiddleware extends AllowCrossDomain
{// 加入自定義請求頭參數 X-Tokenprotected $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;
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/710922.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/710922.shtml
英文地址,請注明出處:http://en.pswp.cn/news/710922.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

果園預售系統|基于Springboot的果園預售系統設計與實現(源碼+數據庫+文檔)

果園預售系統目錄 目錄 基于Springboot的果園預售系統設計與實現 一、前言 二、系統功能設計 三、系統功能設計 1 、果園管理 2、水果管理 3、果樹管理 4、公告管理 四、數據庫設計 1、實體ER圖 五、核心代碼 六、論文參考 七、最新計算機畢設選題推薦 八、源碼獲…

常見的4種Bug 出現原因和解決方案

某項目定期進行線上Bug分析大會&#xff0c;主要針對近期出現的Bug和事故進行分析其出現的原因。經過一段時間的數據分析和匯總&#xff0c;找到了在開發過程中&#xff0c;較為常見的Bug以及其出現的原因。 通過分析原因&#xff0c;進一步找到解決方案&#xff0c;從而有利于…

2024.02.29作業

1. TCP模型 server #include "test.h"#define SER_IP "192.168.191.128" #define SER_PORT 9999int main(int argc, char const *argv[]) {int sfd -1;sfd socket(AF_INET, SOCK_STREAM, 0);if (-1 sfd){perror("socket error");return -1;…

Java底層自學大綱_數據結構和算法篇

數據結構和算法專題_自學大綱所屬類別學習主題建議課時&#xff08;h&#xff09; A 數據結構和算法001 數據結構和算法基礎&#xff0c;時間復雜度Ot和空間復雜度Os2.5 A 數據結構和算法002 數學知識回顧-指數、對數、級數、模運算、復雜度2.5 A 數據結構和算法003 高數知識…

算法沉淀——動態規劃之兩個數組的 dp(上)(leetcode真題剖析)

算法沉淀——動態規劃之兩個數組的 dp 01.最長公共子序列02.不相交的線03.不同的子序列04.通配符匹配 01.最長公共子序列 題目鏈接&#xff1a;https://leetcode.cn/problems/longest-common-subsequence/ 給定兩個字符串 text1 和 text2&#xff0c;返回這兩個字符串的最長 …

0201sherlock(福爾摩斯)-通過名稱尋找媒體賬號(地址)-github-開源項目學習

文章目錄 一 項目簡介二 項目安裝和演示1 安裝2 演示 三 源碼分析1 項目結構2 主程序源代碼分析 四 添加自定義網址結語 一 項目簡介 二 項目安裝和演示 1 安裝 # clone the repo $ git clone https://github.com/sherlock-project/sherlock.git# change the working direct…

前端訪問線上的html 怎么給html 的js中傳遞 訪問路徑

1.需求 我想在項目中訪問一個html 文件 這個html 文件中 跳轉的又是另一個地址 。這個需求是為了讓實現公眾號H5 的重定向登錄 主要是 一個oem 系統 他有多個公眾號 但是每個公眾號 都有對應不用的域名 2.動態域名 <!DOCTYPE html> <html lang"zh">&…

opencv--使用直方圖找谷底進行確定分割閾值

直方圖原理就不說了&#xff0c;大家自行百度 直方圖可以幫助分析圖像中的灰度變化&#xff0c;進而幫助確定最優二值化的灰度閾值&#xff08;threshold level&#xff09;。如果物體與背景的灰度值對比明顯&#xff0c;此時灰度直方圖就會包含雙峰&#xff08;bimodal histo…

Python web框架fastapi數據庫操作ORM(一)

文章目錄 Fastapi ORM操作1、創建模型2、創建數據庫連接配置文件3、啟動項目4、根據模型類創建數據庫表1. 初始化配置&#xff0c;只需要使用一次2. 初始化數據庫&#xff0c;一般情況下只用一次3. 更新模型并進行遷移4. 重新執行遷移&#xff0c;寫入數據庫5. 回到上一個版本6…

Oracle 11g升級19c 后部分查詢功能很慢

*Oracle 11g升級19c 后部分查詢功能很慢 今天生產突然有個查詢非常慢&#xff0c;日志顯示執行了50秒左右&#xff0c;但是從日志中拿出SQL在PLSQL執行&#xff0c;發現用時不到1秒&#xff0c;查看SQL,懷疑是下面幾種原因導致 1、使用函數不當 UNIT.UNIT_CODE LIKE CONCAT(‘…

狀態碼轉文字!!!(表格數字轉文字)

1、應用場景&#xff1a;在我們的數據庫表中經常會有status這個字段&#xff0c;這個字段經常表示此類商品的狀態&#xff0c;例如&#xff1a;0->刪除&#xff0c;1->上架&#xff0c;0->下架&#xff0c;等等。 2、我們返回給前端數據時&#xff0c;如果在頁面顯示0…

python 線程、進程區別與事例

線程&#xff1a;簡單來說&#xff0c;一個進程中包含多個線程&#xff0c;比如打開一個 QQ&#xff08;進程&#xff09;&#xff0c;然后你一邊聊 QQ&#xff08;一個線程&#xff09;&#xff0c;一邊用 QQ 傳送文件&#xff08;一個線程&#xff09;&#xff0c;等等。在一…

Linux中如何執行腳本

要執行一個保存在文件中的腳本&#xff0c;可以按照以下步驟進行&#xff1a; 1. 創建腳本文件&#xff1a; 首先&#xff0c;使用文本編輯器&#xff08;如 ?vi?、?nano?等&#xff09;創建一個新的腳本文件&#xff0c;并將需要執行的命令寫入到文件中。例如&#xff0…

【Unity】在Unity中導出WebGL并讀取Excel數據的實現方法

在游戲開發中&#xff0c;數據的處理和導出是至關重要的環節之一。Unity作為一款強大的游戲開發引擎&#xff0c;提供了豐富的工具和功能來處理和導出數據&#xff0c;包括將游戲導出為WebGL應用&#xff0c;并讀取外部數據文件&#xff0c;比如Excel表格。本文將介紹如何在Uni…

gpt生成器,批量gpt文章生成器

GPT&#xff08;生成式預訓練模型&#xff09;生成器軟件在當今的數字化時代扮演著越來越重要的角色&#xff0c;它們通過人工智能技術&#xff0c;可以自動生成各種類型的文章內容&#xff0c;為用戶提供了無限的創作可能性。本文將介紹6款不同的GPT生成器軟件&#xff0c;并介…

STM32自學?AD單通道

程序的最終運行成果: 當轉動電位器時&#xff0c;數值和電壓值發生變化 ad.c文件 #include "stm32f10x.h" #include "stm32f10x_adc.h" #include "ad.h" #include "stdint.h" void ad_Init(void) { /* 初始化步驟&#xff1a;…

java學習筆記-初級

一、變量 1.雙標簽 <!-- 外部js script 雙標簽 --><script srcmy.js></script> 在新文件my.js里面寫&#xff1a; 2.字符串定義&#xff1a; //外單內雙var str 我是一個"高富帥"的程序員;console.log(str);// 字符串轉義字符 都是用 \ 開頭 …

并發編程中常見的設計模式,c++多線程如何設計

C多線程設計&#xff08;任務的“多對一”、“一對多”、“多對多”情況 該如何設計線程&#xff1f;&#xff09; C書籍中并未找到對多線程設計&#xff0c;有很完整詳細的總結&#xff01;&#xff01;C并發編程書籍中也只是一些理論或則零散的多線程實例。無奈&#xff0c;…

MySQL-MHA搭建、故障測試

一、架構說明 MHA&#xff08;Master High Availability&#xff09;是一個用于 MySQL 主從復制管理和自動故障轉移的開源工具集。MHA 的主要目的是提供 MySQL 環境的高可用性和自動故障轉移功能&#xff0c;確保在主庫發生故障時能夠快速切換到備庫&#xff0c;降低業務中斷時…

ElasticSearch之Completion Suggester

寫在前面 通過completion suggester可以實現如下的效果&#xff1a; 其實就是做的like xxx%這種。通過FST這種數據結構來存儲&#xff0c;實現快速的前綴匹配&#xff0c;并且可以將es所有的數據加載到內存中所以速度completion的查詢速度非常快。 需要注意&#xff0c;如果…