鍍金池/ 問答/Linux  HTML/ react 中如何進(jìn)行跨域處理?

react 中如何進(jìn)行跨域處理?

最近在學(xué)習(xí)react,想請(qǐng)問下react中有沒有像vue一樣能配置跨域請(qǐng)求接口數(shù)據(jù)的?如果可以進(jìn)行,如何進(jìn)行跨域請(qǐng)求?最好能詳細(xì)點(diǎn)...


1.目前項(xiàng)目環(huán)境是自己搭建的,沒有使用create-react-app腳手架,因?yàn)樵谑褂媚_手架搭建的過程中,出現(xiàn)了一些坑,所以果斷舍棄了;
2.項(xiàng)目的接口數(shù)據(jù)是請(qǐng)求的豆瓣數(shù)據(jù),使用的是fetch,但需要進(jìn)行跨域;
3.已經(jīng)了解了一些跨域配置,但是均沒有實(shí)現(xiàn),要么能跨域,返回200狀態(tài),但是請(qǐng)求回來(lái)的bodynull,要么直接無(wú)法跨域操作;

回答
編輯回答
尕筱澄

webpackproxy就可以了。

你的項(xiàng)目是create-react-app創(chuàng)建的就可以在package.json中添加proxy,如下:

{
  // ...
  "proxy": {
    "/api": {
      "target": "<url>",
      "ws": true
      // ...
    }
  }
  // ...
}
2017年5月24日 05:08
編輯回答
舊時(shí)光

如果你項(xiàng)目中使用了 Express 可以使用 express-http-proxy

// 安裝
npm install express-http-proxy --save
// 使用
const express = require('express');
const proxy = require('express-http-proxy');

server.use('/api', proxy('https://xxxxxx.com/'));

順便提一點(diǎn),Fetch 發(fā)送請(qǐng)求默認(rèn)是不帶 cookie 的,你需要在 header 里加上 credentials: 'include'

2017年10月11日 08:19
編輯回答
懶豬

自己配置服務(wù)器
webpack配置
proxyTable

2017年12月24日 17:03
編輯回答
尛曖昧

跨域與否和你用的框架無(wú)關(guān),這應(yīng)該包裝一個(gè)單獨(dú)的模塊來(lái)處理,既然你用了fetch,有一個(gè)庫(kù)叫fetch-jsonp,github上自己去找。建議你抽空去看看到底什么是跨域,前端跨域的方法有哪些,補(bǔ)充一下知識(shí)

2017年11月24日 18:21
編輯回答
來(lái)守候

跨域和react框架沒有關(guān)系。 fetch返回的數(shù)據(jù)需要response.json()一下不知道你有這樣沒有? 或者使用其他的組件試試 比如說(shuō)jsonpaxios

2018年7月8日 17:29
編輯回答
司令

首先,跨域這個(gè)問題,是純前端無(wú)法解決的。
1 JSONP處理跨域,一般這個(gè)方法是為了兼容老版本ie,因?yàn)閕e9及以下不能使用CORS,然而JSONP也需要后臺(tái)支持才 可以。

2 服務(wù)器做重定向,或者代理,或者穿透等等技術(shù),但這些都超越了前端的能力范圍。

3 XMLHttpRequest。需要和后臺(tái)進(jìn)行請(qǐng)求頭設(shè)置,具體方法可以百度

綜上所述,跨域問題與框架無(wú)關(guān),也不是前端能獨(dú)立解決的,所以建議題主去找后端大哥商量一下

2018年2月5日 03:11
編輯回答
孤影
fetch(url, {
        method: "POST",
  mode: "no-cors",//可以在這設(shè)置跨域
  headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  body: "請(qǐng)求參數(shù)"
        }).then(function(res) {
 console.log("Response succeeded?", JSON.stringify(res.ok));
 console.log(JSON.stringify(res));
}).catch(function(e) {
 console.log("fetch fail", JSON.stringify(params));
}); 
2018年3月7日 12:24