gpt4 book ai didi

amazon-s3 - 公共(public)存储桶的 S3 CORS 策略

转载 作者:行者123 更新时间:2023-12-04 02:49:29 25 4
gpt4 key购买 nike

这看起来很容易,但我不知道我错过了什么。我有一个带有从我的网站获取的 js 脚本的公共(public)存储桶。我注意到我没有将 Origin header 发送到 S3,这不是必需的,并且在没有任何 CORS 配置的情况下一切正常。

更重要的是,即使在我手动将 Origin header 添加到该 GET 调用并通过以下方式明确禁止 GET 和我的域之后:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://www.nonexistingdomain.com</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

我仍然可以获取内容。这是怎么回事?

最佳答案

好吧,在与 Quentin 交谈之后,我想我明白我在哪里误解了 CORS 应该如何工作。在 Java 世界中,当 Origin 不匹配时实际拒绝请求是一种非常普遍的做法。这是另一个线程 mentioned .如果我们以 Spring 为例(它是 Java 世界中的事实标准),这是添加 CORS 过滤器时发生的情况:

    String allowOrigin = checkOrigin(config, requestOrigin);
...

if (allowOrigin == null) {
logger.debug("Reject: '" + requestOrigin + "' origin is not allowed");
rejectRequest(response);
return false;
}

哪里:

/**
* Invoked when one of the CORS checks failed.
*/
protected void rejectRequest(ServerHttpResponse response) {
response.setStatusCode(HttpStatus.FORBIDDEN);
}

您可以找到代码 here .

但令我惊讶的是,这并不是其他堆栈和服务器端技术的常见做法。另一种常见的方法是将他们拥有的任何 CORS 配置发送到浏览器并由它来决定。

S3 更加棘手:它仅在存储桶 CORS 规则匹配支持 CORS 的请求(请求 qith Origin header )时才发送 CORS 响应 header 。否则,将没有 CORS 响应 header 。

关于amazon-s3 - 公共(public)存储桶的 S3 CORS 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55668248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com