Node.js 在Express Nodejs Serverless中获取XMLHttpRequest CORS错误
我正在使用serverless express nodejs构建API 遵循本教程 错误 访问位于“”的XMLHttpRequesthttps://api.execute-api.ap-south-1.amazonaws.com/dev/users/login“起源”http://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态 下面是我的API网关的外观 serverless.yml文件Node.js 在Express Nodejs Serverless中获取XMLHttpRequest CORS错误,node.js,express,aws-lambda,aws-api-gateway,serverless,Node.js,Express,Aws Lambda,Aws Api Gateway,Serverless,我正在使用serverless express nodejs构建API 遵循本教程 错误 访问位于“”的XMLHttpRequesthttps://api.execute-api.ap-south-1.amazonaws.com/dev/users/login“起源”http://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态 下面是我的API网关的外观 serverless.yml文件 functions: Use
functions:
UserLoginManual:
handler: index.handler
events:
- http:
path: users/login
method: post
cors: true
resources:
Resources:
StorageBucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: ${self:custom.bucket}
GatewayResponseDefault4XX:
Type: 'AWS::ApiGateway::GatewayResponse'
Properties:
ResponseParameters:
gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
ResponseType: DEFAULT_4XX
RestApiId:
Ref: 'ApiGatewayRestApi'
index.js
const serverless = require('serverless-http');
const express = require('express')
const app = express()
const bodyParser = require("body-parser");
const bcrypt = require("bcryptjs");
const { check, validationResult} = require("express-validator");
const jwt = require("jsonwebtoken");
const mongoose = require("mongoose");
const { json } = require('express');
var cors = require('cors')
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());
// DB Connection Instance
const { connectToDatabase } = require("./services/db");
const auth = require("./middleware/auth");
// Models File
const UsersModel = require('./models/UsersModel');
app.post(
"/users/login",
[
check("email", "Please enter a valid email").isEmail(),
check("password", "Please enter a valid password").isLength({
min: 6
})
],
async (req, res) => {
const conn = await connectToDatabase();
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({
status: "error",
message: errors.array()
});
}
const { email, password } = req.body;
try {
let user = await UsersModel.findOne({
email
});
if (!user) {
return res.status(400).json({
status: "error",
message: "User Not Exist"
});
}
const isMatch = await bcrypt.compare(password, user.password);
if (!isMatch) {
return res.status(400).json({
status: "error",
message: "Incorrect Password!"
});
}
const payload = {
user: {
id: user.id
}
};
jwt.sign(
payload,
"randomString",
{
expiresIn: 50000
},
(err, token) => {
if (err) throw err;
res.status(200).json({
status: "success",
token: token
});
}
);
} catch (e) {
console.log(e.message)
return res.status(500).json({
status: "error",
message: e.message
});
}
});
module.exports.handler = serverless(app);
试图添加
res.setHeader('Access-Control-Allow-Origin', "*")
请帮忙