在 Netlify 函数中强制同源? (cors)
Posted
技术标签:
【中文标题】在 Netlify 函数中强制同源? (cors)【英文标题】:Enforce same-origin in Netlify function? (cors) 【发布时间】:2021-12-03 07:38:03 【问题描述】:我希望在我的 Netlify 站点中强制要求来自 process.env.URL
中的所需来源。但目前我既可以cURL
也可以向 Postman 发出请求,并返回带有 statusCode 200 的响应数据。我错过了什么吗?
exports.handler = async (event, context, callback) =>
try
let id = event.rawUrl.split("/").pop();
let response;
switch (event.httpMethod)
case "GET":
response = await prisma.like.count( where: postId: parseInt(id) );
break;
case "POST":
response = await prisma.like.create(
data: postId: parseInt(id) ,
);
break;
case "DELETE":
response = await prisma.like.delete(
where:
id: parseInt(id),
,
);
break;
callback(null,
statusCode: 200,
headers:
"Access-Control-Allow-Origin": process.env.URL,
"Access-Control-Allow-Headers":
"Origin, X-Requested-With, Content-Type, Accept",
"Access-Control-Allow-Methods": "*",
"Content-Type": "application/json",
,
body: JSON.stringify(response),
);
return;
catch (e)
console.error(e);
return statusCode: 500 ;
;
【问题讨论】:
【参考方案1】:CORS 是一种浏览器功能,即浏览器服从设置。 curl 不关心 CORS 并忽略它。
【讨论】:
感谢您在这里的洞察力,您知道 API 通常会尝试防止 curl 请求吗?我确实在一个随机网站上的 js 控制台中运行了 fetch,并且能够验证 CORS 是否按预期工作。 我不是安全专家。如果你想检查调用是否来自同一个域,你可以检查referrer header,但我不认为这是 100% 安全的。以上是关于在 Netlify 函数中强制同源? (cors)的主要内容,如果未能解决你的问题,请参考以下文章
集成我的前端代码(Netlify)和我的后端代码(heroku)(CORS)的问题[关闭]