У вас есть домен перекрестного происхождения на https://whispering -shore-72195.herokuapp.com от источника https://mighty -citadel-71298.herokuapp.com
Вы можете попробовать пакет npm cors в качестве промежуточного программного обеспечения вместо своего специального промежуточного программного обеспечения.Пакет CORS
позволяет выполнять множественную настройку и очень прост в использовании.
Простое использование (включить все запросы CORS)
import express from 'express';
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import cors from 'cors';
require('dotenv').config()
import filmRoutes from './api/routes/films'
import userRoutes from './api/routes/users'
const app = express()
const DBNAME = process.env.DB_USER
const DBPASSWORD = process.env.DB_PASS
mongoose.connect(`mongodb://${DBNAME}:${DBPASSWORD}@ds157422.mlab.com:57422/filmbase`, {useNewUrlParser: true})
/*app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", '*');
res.header("Access-Control-Allow-Credentials", true);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header("Access-Control-Allow-Headers", 'Origin,X-Requested-With,Content-Type,Accept,content-type,application/json');
next();
});*/
app.use(cors()); // <---- use cors middleware
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use('/films', filmRoutes)
app.use('/users', userRoutes)
export default app;
Редактировать:
Я протестировал ваш клиентский логин на ваш сервер с https
, и он работает без проблем с CORS.Возможно, вы исправили это успешно.
Я пробовал с простым на StackBlitz , и он успешно работает.
Вы можете попробовать войти https://js -53876623.stackblitz.io / и просматривать вкладку сети при проверке и видеть OPTIONS (200 status)
и POST (404 not found)
(потому что я не знаю ни одного пользователя в вашей базе данных)
Редактировать 22 декабря 2018 - 7:18PM
Я попробовал ваш код на своем локальном компьютере, возможно, вы не проверяли и обрабатывали все ошибки, к сожалению, это приводит к сбою приложения.
Я запустил ваш код и заметил, чтопроблема может быть jsonwebtoken
ошибка:
Ошибка: secretOrPrivateKey должен иметь значение
Пожалуйста, попробуйте с process.env.JWT_KEY || 'Require key here!!!',
и установите JWT_KEY
в вашей среде или использовании||
как ключ по умолчанию на сервере.
Возможно, это решит вашу проблему.
Рекомендует:
У меня есть несколько рекомендаций для вашего кода:
- Пожалуйста, используйте
User.findOne()
вместо User.find()
- Пожалуйста, используйте
app.use(cors());
jsonwebtoken
следует использовать Асинхронный вместо синхронизации при запуске на сервере.