我正在尝试在启用了cors的AWS lambda上发出POST请求,并且我在API中使用了cors包。 然后我用fetch发出POST请求,但是我收到了这个错误:
请求的资源上没有'Access-Control-Allow-Origin'标头。
cors包不应该考虑这个,或者我需要做一些额外的配置?
api.js
import { json, urlencoded } from 'body-parser'
import express from 'express'
import cors from 'cors'
import recipe from './routes/recipe'
import login from './routes/login'
import unit from './routes/unit'
const app = express()
app.use(cors()) // enabling cors
app.use(json())
app.use(urlencoded({ extended: true }))
app.use('/recipes', recipe)
app.use('/login', login)
app.use('/units', unit)
request.js
const params = { 'POST', body, mode: 'cors' }
return await (await fetch(baseURL + endpoint, params)).json()
recipe.js
import { Router } from 'express'
const router = Router()
router.post('/', async ({ body }, res) => {
// save recipe in database
res.json(recipeId)
})
export default router
完整源代码 - api:https://github.com/EliasBrothers/zanzas-recipes-api/tree/beta-develop 前端 - https://github.com/EliasBrothers/zanzas-recipes-web/tree/develop
答案 0 :(得分:1)
我通过更新项目中的包并更改请求
来实现它 const stringifiedBody = JSON.stringify(body) // added
const params = {
method,
body: stringifiedBody,
mode: 'cors',
headers: { // added
'Accept': 'application/json',
'Content-Type': 'application/json'
}
}
答案 1 :(得分:0)
我不确定这是否是复制错误,您没有以正确的方式指定获取方法 POST 。有时,未找到页面也会被识别为 CORS 问题。您是否尝试规范化获取参数?
params = {
method: 'POST',
body: body,
mode:'cors'
}