节点js没有访问控制允许来自其他问题的原始答案也不起作用
我有节点js服务器,你可以在这里查看 -
在index.js
我有以下内容
const express = require('express')
const cors = require('cors')
const bodyParser = require('body-parser')
const passport = require('passport')
const localSignupStrategy = require('./passport/local-signup')
const localLoginStrategy = require('./passport/local-login')
const authRoutes = require('./routes/auth')
const postRoutes = require('./routes/post')
const commentRoutes = require('./routes/comment')
const app = express()
const port = 5000
const envConfig = require('./config/environment')
require('./config/database')(envConfig)
app.use(function (req, res, next) {
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', '');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.use(passport.initialize())
//app.use(cors())
passport.use('local-signup', localSignupStrategy)
passport.use('local-login', localLoginStrategy)
// routes
app.use('/auth', authRoutes)
app.use('/post', postRoutes)
app.use('/comment', commentRoutes)
app.listen(port, () => {
console.log(`Server running on port ${port}...`)
})
加入app.use()
的Access-Control-Allow-Origin
是从这里复制的 - No 'Access-Control-Allow-Origin' - Node / Apache Port Issue
我也尝试了其他问题,但它不起作用。
我试过了
app.use(cors())
app.use(cors({origin:"front-end-url"}))
app.use(cors({origin:null}))
app.use(cors({origin:"*"}))
如其他答案中所述,但没有任何作用。
这是我得到的错误 -
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
如果你想在这里重新创建它是前端Login
并填写表格并按下控制台上的“注册”你会看到错误。
如果需要,这里是login and
signupinside
routes / auth.js的路线
const express = require('express')
const passport = require('passport')
const validator = require('validator')
const userController = require('../controllers/user')
const router = new express.Router()
function validateSignupForm (payload) {
const errors = {}
let isFormValid = true
let message = ''
if (!payload || typeof payload.password !== 'string' || payload.password.trim().length < 4) {
isFormValid = false
errors.password = 'Password must have at least 4 characters.'
}
if (!payload || typeof payload.username !== 'string' || payload.username.trim().length === 0) {
isFormValid = false
errors.name = 'Please provide your name.'
}
if (!isFormValid) {
message = 'Check the form for errors.'
}
return {
success: isFormValid,
message,
errors
}
}
function validateLoginForm (payload) {
const errors = {}
let isFormValid = true
let message = ''
if (!payload || typeof payload.password !== 'string' || payload.password.trim().length === 0) {
isFormValid = false
errors.password = 'Please provide your password.'
}
if (!isFormValid) {
message = 'Check the form for errors.'
}
return {
success: isFormValid,
message,
errors
}
}
router.post('/signup', (req, res, next) => {
const validationResult = validateSignupForm(req.body)
if (!validationResult.success) {
return res.status(200).json({
success: false,
message: validationResult.message,
errors: validationResult.errors
})
}
return passport.authenticate('local-signup', (err, user) => {
if (err) {
return res.status(200).json({
success: false,
message: err
})
}
return res.status(200).json({
success: true,
user: req.body,
message: 'You have successfully signed up! Now you should be able to log in.'
})
})(req, res, next)
})
router.post('/login', (req, res, next) => {
const validationResult = validateLoginForm(req.body)
if (!validationResult.success) {
return res.status(200).json({
success: false,
message: validationResult.message,
errors: validationResult.errors
})
}
return passport.authenticate('local-login', (err, token, userData) => {
if (err) {
if (err.name === 'IncorrectCredentialsError') {
return res.status(200).json({
success: false,
message: err.message
})
}
return res.status(200).json({
success: false,
message: 'Could not process the form.'
})
}
return res.json({
success: true,
message: 'You have successfully logged in!',
token,
user: userData
})
})(req, res, next)
})
module.exports = router
回答如下:
在每个网址的选项中添加cors
。
var cors = require('cors');
router.options('/post', cors());
router.post('/post');
节点js没有访问控制允许来自其他问题的原始答案也不起作用
我有节点js服务器,你可以在这里查看 -
在index.js
我有以下内容
const express = require('express')
const cors = require('cors')
const bodyParser = require('body-parser')
const passport = require('passport')
const localSignupStrategy = require('./passport/local-signup')
const localLoginStrategy = require('./passport/local-login')
const authRoutes = require('./routes/auth')
const postRoutes = require('./routes/post')
const commentRoutes = require('./routes/comment')
const app = express()
const port = 5000
const envConfig = require('./config/environment')
require('./config/database')(envConfig)
app.use(function (req, res, next) {
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', '');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.use(passport.initialize())
//app.use(cors())
passport.use('local-signup', localSignupStrategy)
passport.use('local-login', localLoginStrategy)
// routes
app.use('/auth', authRoutes)
app.use('/post', postRoutes)
app.use('/comment', commentRoutes)
app.listen(port, () => {
console.log(`Server running on port ${port}...`)
})
加入app.use()
的Access-Control-Allow-Origin
是从这里复制的 - No 'Access-Control-Allow-Origin' - Node / Apache Port Issue
我也尝试了其他问题,但它不起作用。
我试过了
app.use(cors())
app.use(cors({origin:"front-end-url"}))
app.use(cors({origin:null}))
app.use(cors({origin:"*"}))
如其他答案中所述,但没有任何作用。
这是我得到的错误 -
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
如果你想在这里重新创建它是前端Login
并填写表格并按下控制台上的“注册”你会看到错误。
如果需要,这里是login and
signupinside
routes / auth.js的路线
const express = require('express')
const passport = require('passport')
const validator = require('validator')
const userController = require('../controllers/user')
const router = new express.Router()
function validateSignupForm (payload) {
const errors = {}
let isFormValid = true
let message = ''
if (!payload || typeof payload.password !== 'string' || payload.password.trim().length < 4) {
isFormValid = false
errors.password = 'Password must have at least 4 characters.'
}
if (!payload || typeof payload.username !== 'string' || payload.username.trim().length === 0) {
isFormValid = false
errors.name = 'Please provide your name.'
}
if (!isFormValid) {
message = 'Check the form for errors.'
}
return {
success: isFormValid,
message,
errors
}
}
function validateLoginForm (payload) {
const errors = {}
let isFormValid = true
let message = ''
if (!payload || typeof payload.password !== 'string' || payload.password.trim().length === 0) {
isFormValid = false
errors.password = 'Please provide your password.'
}
if (!isFormValid) {
message = 'Check the form for errors.'
}
return {
success: isFormValid,
message,
errors
}
}
router.post('/signup', (req, res, next) => {
const validationResult = validateSignupForm(req.body)
if (!validationResult.success) {
return res.status(200).json({
success: false,
message: validationResult.message,
errors: validationResult.errors
})
}
return passport.authenticate('local-signup', (err, user) => {
if (err) {
return res.status(200).json({
success: false,
message: err
})
}
return res.status(200).json({
success: true,
user: req.body,
message: 'You have successfully signed up! Now you should be able to log in.'
})
})(req, res, next)
})
router.post('/login', (req, res, next) => {
const validationResult = validateLoginForm(req.body)
if (!validationResult.success) {
return res.status(200).json({
success: false,
message: validationResult.message,
errors: validationResult.errors
})
}
return passport.authenticate('local-login', (err, token, userData) => {
if (err) {
if (err.name === 'IncorrectCredentialsError') {
return res.status(200).json({
success: false,
message: err.message
})
}
return res.status(200).json({
success: false,
message: 'Could not process the form.'
})
}
return res.json({
success: true,
message: 'You have successfully logged in!',
token,
user: userData
})
})(req, res, next)
})
module.exports = router
回答如下:
在每个网址的选项中添加cors
。
var cors = require('cors');
router.options('/post', cors());
router.post('/post');