繁体   English   中英

Cloudfront Worker Fetch 禁止 AWS 403

[英]AWS 403 forbidden from Cloudfront Worker Fetch

使用从无服务器 Cloudflare Worker 获取到我自己的托管在 AWS EC2 实例上的 dotnetcore api 时,我收到 403 禁止响应。 GET 和 POST。 示例工作代码(也使用用户代理、接受等初始化标头进行测试,但结果相同):

fetch('http://54.xxx.xxx.xxx/test')

但是,对该 api ip url 的基本获取从本地 ZDE9B9ED78027E2E1ZEFFEE 和一个简单的托管网页返回 200 以及 postman 和 curl。

此外,Cloudflare 工作人员可以毫无问题地获取其他 API。

fetch('http://jsonplaceholder.typicode.com/posts')

最后,我不得不改用 AWS DNS url。

fetch('http://ec2-54-xxx-xxx-xxx.us-west-1.compute.amazonaws.com/test')

此 AWS elasticbeanstalk 设置尽可能基本。 具有默认安全组的单个 t3a.nano 实例。 我没有看到任何关于 IP 与 DNS url 使用的文档,但它们应该解析为相同的 IP。 此外,我没有看到任何选项来处理 cloudflare 方面的 DNS 问题。

在 stackoverflow 上也没有任何类似的问题。

所以在经历了很多痛苦之后,我只是在这里记录解决方案。

在亚马逊实例摘要下,您可以找到“公共 IPv4 地址”和“公共 IPv4 DNS”。

从 Cloudflare 工作人员使用公共 dns 获取工作

fetch('http://ec2-54-xxx-xxx-xxx.us-west-1.compute.amazonaws.com/test')

并使用公共 ip 获取返回状态 403,状态文本为“禁止”

fetch('http://54.xxx.xxx.xxx/test')

Cloudflare Workers 可以发出出站 HTTP 请求,但仅限于域名。 Worker 无法向 IP 地址发出 fetch 请求。

我无法确认您观察到的确切行为(您的帖子是 9 个月前的,从那时起 Cloudflare Workers 发生了一些变化),在上个月左右我观察到在 IP 上调用fetch() address 导致工作人员看到“错误 1003 访问被拒绝”作为获取响应。

没有太多信息,但这里有关于Error 1003的可用信息:

错误 1003 访问被拒绝:不允许直接 IP 访问

常见原因 – 客户端或浏览器直接访问 Cloudflare IP 地址。

解决方案 – 浏览到 URL 中的网站域名,而不是 Cloudflare IP 地址。

如您所见,如果您改用 DNS 名称,则 fetch 可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM