У меня есть интерфейсное приложение с reactjs и серверное с express, где я локально отправляю данные внешнего интерфейса, используя localhost:3333
с ax ios, с этим проблем не возникает.
Теперь я пытаюсь использовать экземпляр EC2 AWS для размещения этого приложения, но безуспешно.
Экземпляр ec2 предназначен только для тестов, поэтому он публикует c DNS IPV4: http://ec2-18-228-222-138.sa-east-1.compute.amazonaws.com/
и publi c IPV4: 18.228.222.138
Когда я пытаюсь отправить метод POST на сервер, обращающийся к publi c DNS, я получаю сообщение от браузера консоли: Access to XMLHttpRequest at 'http://18.228.222.138/uploadFile' from origin 'http://ec2-18-228-222-138.sa-east-1.compute.amazonaws.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource
.
Когда я пытаюсь выполнить POST через publi c IPV4 (18.228.222.138), я получаю из браузера консоли: 405 (Not Allowed)
.
Не могу понять, что мне где не хватает.
Мои коды и конфиги:
Запуск back-end на порту 3333 с npm start
или pm2 start npm -- run server
. Index.js
код:
import cors from 'cors'
import express from 'express'
import routes from './routes'
import fileUpload from 'express-fileupload'
import shell from 'shelljs';
import bodyParser from 'body-parser';
const app = express()
app.use( cors({ origin: '*' }) ); //enable any origin here
app.use(express.json());
app.use(express.static('public'));
app.use(fileUpload({
useTempFiles : true,
tempFileDir : '/tmp/'
}));
app.use(routes);
app.disable('x-powered-by');
app.listen(3333);
Блокировать скрипты в серверном пакете. json:
"scripts": {
"start": "nodemon --exec sucrase-node ./src/index.js",
"server": "babel-node ./src/index.js",
},
Nginx config:
server {
listen 80 default_server;
server_name http://ec2-18-228-222-138.sa-east-1.compute.amazonaws.com ;
location / {
root /var/www/FullFinalPaper/front-tcc/build;
try_files $uri /index.html;
add_header 'Access-Control-Allow-Origin' '*';
}
location /var/ww/FullFinalPaper/front-tcc/src/services/api.js {
proxy_method POST;
proxy_http_version 1.1;
proxy_pass http://18.228.222.138/3333;
}
}
Ax ios конфигурация, от внешнего интерфейса к внутреннему:
import axios from 'axios';
const api = axios.create({
baseURL: 'http://18.228.222.138',
});
export default api;
Экземпляр EC2 со всеми исходящими портами и включенными входящими портами S SH, HTTP и HTTPS.