本篇文章主要介紹了react中fetch之cors跨域請求的實現方法,寫的十分的全面細緻,具備必定的參考價值,對此有須要的朋友能夠參考學習下。若有不足之處,歡迎批評指正。php
項目中使用了react,當中須要使用fetch來代替ajax。css
因爲react的create_react_app工具很方便,基本上開箱即用,通過建立項目,輸入npm start命令後,便自動監聽一個3000的端口,到此前端部分就緒。html
後端部分我使用了phalcon。前端
因爲先後端分離,爲了方便,我嘗試在nginx中使之同域(前端和後臺api的頂級域名相同),但phalcon框架是單入口、react監聽3000時候,經過nginx反向代理,出現js找不到的問題,因而放棄同域的打算。vue
所以我配置了兩個域名:node
一、www.xxx.com 二、data.xxx.comreact
第一個域名用於react部分,端口號是3000(調試用,正式上線是80) 第二個域名用於api,端口號是80webpack
因而乎出現跨域問題。nginx
如下是php部分的容許跨域域名訪問的設置web
$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,快速升職加薪,走上人生巔峯。