本篇文章主要介紹了react中fetch之cors跨域請求的實現方法,寫的十分的全面細緻,具有一定的參考價值,對此有需要的朋友可以參考學習下。如有不足之處,歡迎批評指正。
項目中使用了react,當中需要使用fetch來代替ajax。
由於react的create_react_app工具很方便,基本上開箱即用,經過創建項目,輸入npm start命令後,便自動監聽一個3000的端口,到此前端部分就緒。
後端部分我使用了phalcon。
由於前後端分離,爲了方便,我嘗試在nginx中使之同域(前端和後臺api的頂級域名相同),但phalcon框架是單入口、react監聽3000時候,通過nginx反向代理,出現js找不到的問題,於是放棄同域的打算。
因此我配置了兩個域名:
1、www.xxx.com
2、data.xxx.com
第一個域名用於react部分,端口號是3000(調試用,正式上線是80)
第二個域名用於api,端口號是80
於是乎出現跨域問題。
以下是php部分的允許跨域域名訪問的設置
$origin = isset($_SERVER['HTTP_ORIGIN'])?$_SERVER['HTTP_ORIGIN']:'';
$allowOrigin = [
'http://www.xxx.com',
'http://xxx.com'
];
if (in_array($origin, $allowOrigin)) {
header('Access-Control-Allow-Origin: ' . $origin);
}//歡迎加入前端全棧開發交流圈一起吹水聊天學習交流:864305860
header('Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: Content-Type, Accept');
以下是fetch部分的ajax請求
let postData = {a:'b'};
fetch('http://data.xxx.com/Admin/Login/login', {
method: 'POST',
mode: 'cors',
credentials: 'include',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: JSON.stringify(postData)
}).then(function(response) {
console.log(response);
});//歡迎加入前端全棧開發交流圈一起吹水聊天學習交流:864305860
結語
感謝您的觀看,如有不足之處,歡迎批評指正。
本次給大家推薦一個免費的學習羣,裏面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。
對web開發技術感興趣的同學,歡迎加入Q羣:864305860,不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視頻資料。
最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峯。