我是Cloudflare Workers的新手。
如何在Cloudflare Workers中设置CORS?
response = await cache.match(cacheKey);
if (!response) {
// handle fetch data and cache
}
const myHeaders = new Headers();
myHeaders.set("Access-Control-Allow-Origin", event.request.headers.get("Origin"));
return new Response(JSON.stringify({
response
}), {
status: 200, headers: myHeaders
});
5条答案
按热度按时间f2uvfpb91#
其实挺痛苦的,有一个sample from Cloudflare,但是不能直接用,最近终于弄出来了,把详细步骤都放到了一个blog post里面。
下面是工人的完整代码。
li9yvcax2#
你的代码没有设置Content-Type头。你应该使用myHeaders.set()设置它,或者使用原始的响应头,而不是创建一个空的headers对象:
我也在质疑你为什么要在响应上使用JSON.stringify。我认为你想要的是这样的:
46scxncf3#
下面是它如何工作的。我使用的是Itty Router,但这应该对一个普通的工人也一样。
感谢这个免费的蛋头视频Add CORS Headers to a Third Party API Response in a Workers API
4uqofj5v4#
Anurag's answer帮我完成了90%的工作,谢谢你。我也在使用
itty-router
,这是我必须添加的内容。我创建了一个简单的preflight中间件:
然后我把它添加到每一条路线上。
希望这有帮助!
vcirk6k65#
这是“cloudflare worker cors error”的最高Google结果。
这里有一个超级简单的方法来设置正确的标题。
你可以像这样调用Cloudflare函数:
这将向服务器发送一个请求。因为它来自浏览器,服务器需要发送一个竖起大拇指,是的,这是允许的。
你的Cloudflare worker看起来像这样:
注意你是如何在响应中包含头信息的,这就像浏览器和服务器握手一样,是的,这种交互是可以的。
当然,使用 * 字符有问题,做一些研究,以确保你知道你在做什么,如果你正在设置和使用cookie等。
但这应该有助于新手,比如能够从前端使用Cloudflare工作人员。