React中Fetch之cors跨域請求的使用
阿新 • • 發佈:2018-12-22
本篇文章主要介紹了react中fetch之cors跨域請求的實現方法,寫的十分的全面細緻,具有一定的參考價值,對此有需要的朋友可以參考學習下。如有不足之處,歡迎批評指正。
專案中使用了react,當中需要使用fetch來代替ajax。
由於react的create_react_app工具很方便,基本上開箱即用,經過建立專案,輸入npm start命令後,便自動監聽一個3000的埠,到此前端部分就緒。
後端部分我使用了phalcon。
由於前後端分離,為了方便,我嘗試在nginx中使之同域(前端和後臺api的頂級域名相同),但phalcon框架是單入口、react監聽3000時候,通過nginx反向代理,出現js找不到的問題,於是放棄同域的打算。
因此我配置了兩個域名:
第一個域名用於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,快速升職加薪,走上人生巔峰。