#ajax #node.js #reactjs
#ajax #node.js #reactjs
Вопрос:
Я использую webpack-dev-server при разработке в ReactJS.
Я также хочу добавить серверную часть, которая будет написана на NodeJS.
Когда я запускаю webpack-dev-сервер, он привязывается к порту 8080.
Когда я запускаю узел, он не может привязаться к тому же порту.
Поэтому я не могу выполнять запросы $ .ajax из-за SOP.
Как мне решить эту проблему?
NodeJS:
const express = require('express');
const app = express();
app.get('/messages', function(req, res){
res.send('hello world!');
});
let server = app.listen(8081, function() {
const host = server.address().address;
const port = server.address().port;
console.log('Listening at http://%s:%s', host, port);
});
Реагировать / JS / Ajax:
$.getJSON('/messages', function(data) {
this.setState({
messages: data
});
}.bind(this));
И я работаю webpack-dev-server
без каких-либо параметров.
Комментарии:
1. Как вы привязываетесь к порту в своем коде nodejs? Можете ли вы показать какой-нибудь код?
2. Отредактировано @FelipeSabino
3. как насчет
webpack-dev-server
привязки порта?4. @FelipeSabino я оставил это нетронутым.
5. Можете ли вы показать, что вы там делаете? А также как вы это называете?
Ответ №1:
приложение port
отличается от port
вашего сервера. если вы хотите сохранить порт сохранения, вы можете попробовать использовать webpack proxy
module.exports = {
// the other config of your webpack
devServer: {
hot: true,
historyApiFallBack: true,
proxy: {
'/message': {
target: 'http://localhost:8081',
secure: false,
changeOrigin: true
},
},
},
}
при извлечении http://localhost:8080/messages
webpack-dev-server будет прокси http://localhost:8080/messages
-сервером .
Ответ №2:
Ваше приложение находится на порту 8080.
Ваш сервер находится на 8081.
Если вы хотите запросить с сервера, вам нужно указать порт на сервер. Если нет, он будет запрашивать порт, на котором запущено ваше приложение, то есть 8080.
$.getJSON('https://localhost:8081/messages', function(data) {
this.setState({
messages: data
});
}.bind(this));
Комментарии:
1. Это именно проблема. Поскольку я использую два разных порта, одна и та же политика происхождения приводит к тому, что она не работает.