我的反应应用程序是在localhost:3000和节点服务器上运行localhost:5000。当我试图连接到快速API时,路由将localhost:3000/auth/google而不是localhost:5000/auth/google
用户操作。js
export const updateLoginUser = (userData, scheme) => async dispatch => {
console.log(scheme);
if(scheme === 'google') {
// TODO: fetch user from the DB
const fetchedUser = await axios.post('/auth/google');
dispatch({
type: UPDATE_USER,
payload: fetchedUser.data
})
} else {
// TODO: fetch user from the DB
const fetchedUser = await axios.post('/api/get_user/', {
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify(userData)
})
dispatch({
type: UPDATE_USER,
payload: fetchedUser.data
})
}
}
setupProxy.js
const proxy = require('http-proxy-middleware')
module.exports = function(app) {
app.use(proxy('/auth/google', { target: 'http://localhost:5000' }))
}
节点server.js
const express = require('express');
const mongoose = require('mongoose');
const keys = require('./config/keys');
const cookieSession = require('cookie-session');
const passport = require('passport');
const cors = require('cors');
const morgan = require('morgan');
require('./models/Users');
require('./services/passport'); // it is not returing anything hence no need of assigning
mongoose.connect(keys.mongoDBURI, { useNewUrlParser: true, useUnifiedTopology: true });
const app = express();
app.use(cors());
// Setup the cookie session
app.use(cookieSession({
maxAge: 30 * 24 * 60 * 1000, // Time till the cookie will be alive
keys: [keys.cookieKey]
}));
app.use(morgan('combined'));
// Make passport know to use the cookieSession
app.use(passport.initialize());
app.use(passport.session());
require('./routes/authRoutes')(app); // authRoute returing a function and we are immediatly invoking that function
const PORT = process.env.PORT || 5000;
app.listen(5000);
编辑:反应包。json
{
"name": "blogpost-frontend",
"version": "0.1.0",
"private": true,
"dependencies": {
"axios": "^0.19.0",
"http-proxy-middleware": "^0.20.0",
"node-sass": "^4.13.0",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-redux": "^7.1.3",
"react-router-dom": "^5.1.2",
"react-scripts": "3.2.0",
"redux": "^4.0.4",
"redux-thunk": "^2.3.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"proxy": "http://localhost:5000"
}
我是新手,因此我不知道代理究竟是如何工作的。
我想你忘了添加应用程序的第一部分。侦听(api,proxy())
而您只有proxy
方法,问题可能是您没有指定要通过代理的url/路径。
var express = require('express');
var proxy = require('http-proxy-middleware');
var app = express();
app.use(
'/api', // you miss this part in your server code
proxy({ target: 'http://www.example.org', changeOrigin: true })
);
app.listen(3000);
// http://localhost:3000/api/foo/bar -> http://www.example.org/api/foo/bar
您可能需要重写setupProxy。js如下所示
js prettyprint-override">const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(
'/api',
createProxyMiddleware({
target: 'http://localhost:5000',
changeOrigin: true,
})
);
};
嗨,我一直在尝试代理解决方案,以避免在myapp中的cors问题,但它似乎不起作用,我重启了我的机器这么多次,这没有什么区别。基本上,myapp使用ftchApi调用另一个域(localhost:8080),这是一个SpringBoot应用程序终结点。我添加了package.json"代理":"http://localhost:8080/",但api仍然返回与localhost:3000调用,我尝
我试图发布到一个webapi,我已经从一个用NativeScript制作的移动应用程序的C#。 我正在使用和。但是事件总是在触发。 这是我的代码:我的两个导入: 这是我获取图像uri的方式: 这就是我试图发布数据的方式: 我能做错什么?提前感谢。:)
我试图配置一个代理服务器(setupProxy.js)内创建反应应用程序使用HTTP-代理-中间件获得访问天气数据API(api.darksky.net)。 我遵循React文档中的步骤(https://facebook.github.io/create-react-app/docs/proxying-api-requests-in-development#configuring-代理(手动)但我
我只是有一个关于服务中http请求的结构和处理响应的问题。我正在使用Angular2。alpha46 Typescript(刚刚开始测试-我喜欢它…Ps…。感谢所有一直致力于它并通过github作出贡献的人) 因此,采取以下措施: 登录表单。组成部分ts 从这个组件中,我导入了我的userService,它将容纳我的超文本传输协议请求,以登录用户。 使用者服务ts 我想做的是能够处理http请求之
嗯,我正在开发一个反应应用程序。我有一个快速服务器在localhost:5000和反应应用程序在localhost:3000。我正在通过谷歌oauth流使用Passportjs。现在真正的问题是,我已经使用超文本传输协议-代理-中间件去localhost:5000/auth/google从我的反应应用程序使用登录按钮,它指向 /auth/google.然后认证后,我应该返回到 /auth/goog
我有以下伪代码 我想要的是,我循环遍历一个对象数组,每个对象都获得相关的用户和产品,然后订阅用户和产品。我怎么能那样做?