参考资料

  1. 如何配置IPv6回源?
  2. WebP压缩 设置教程
  3. 什么是回源HTTP请求超时时间
  4. CDN(内容分发网络)中启用内容压缩参数的具体解释
  5. 预防 CDN 盗刷 阿里云操作方法
  6. CDN流量封顶配置详解
  7. HTTP/2设置配置
  8. 详细说明CDN:启用Web防火墙

HTTP 请求方法的限制主要体现在缓存行为、安全策略和配置能力

CDN 对 HTTP 请求方法的限制主要体现在缓存行为安全策略配置能力上:

  1. 核心缓存限制(最常见)

    • 安全性:这些方法通常用于提交数据或修改服务器状态(如登录、下单、删文件)。缓存它们的响应可能导致数据不一致或安全风险(如缓存了包含敏感信息的响应)。

    • 幂等性:这些方法通常不是幂等的,重复执行可能产生不同结果或副作用。

    • 默认缓存方法:CDN 主要设计用于缓存 GETHEAD 请求的响应。这两种方法被视为安全的、幂等的(重复请求不会改变服务器状态),适合缓存。

    • 非缓存方法POSTPUTDELETEPATCH 等请求方法通常不被 CDN 缓存。原因是:

    • 结果:对于非 GET/HEAD 请求,CDN 通常会直接回源(将请求转发给源服务器),并将源服务器的响应直接返回给客户端,不进行缓存。

  2. 预检请求处理

    • CDN 需要能够正确处理并传递 OPTIONS 请求到源服务器。

    • 源服务器必须配置正确的 CORS 响应头(Access-Control-Allow-Methods, Access-Control-Allow-Headers 等)在 OPTIONS 响应中。

    • 一些 CDN 提供商允许缓存 OPTIONS 响应(基于请求 URL 和 Origin 头等),以提高后续预检请求的速度。缓存时间通常较短。

    • CORS 预检:当 Web 应用发起跨域请求(尤其是非简单请求,如使用 POST 带自定义 Header 或 Content-Type: application/json),浏览器会先发送一个 OPTIONS 方法的预检请求,询问服务器是否允许该跨域请求。

    • CDN 角色

  3. 安全策略限制(WAF/防火墙功能)

    • 阻止危险方法(如 TRACECONNECT),这些方法可能被用于探测或攻击。

    • 限制 API 端点只允许特定方法(如 /api/users 只允许 GETPOST,阻止 PUT/DELETE)。

    • 许多 CDN 集成了 Web 应用防火墙功能。

    • 管理员可以配置 WAF 规则来显式允许或阻止特定的 HTTP 方法

    • 常见用途

    • 结果:如果请求方法被 WAF 规则阻止,CDN 会直接向客户端返回错误响应(如 403 Forbidden405 Method Not Allowed),请求不会到达源服务器

  4. 配置能力(边缘逻辑/代理行为)

    • 修改请求方法:例如,将某些 POST 请求重写为 GET 请求(需谨慎,可能违反规范)。

    • 基于方法路由:将不同方法的请求发送到不同的源服务器或处理路径。

    • 实现自定义缓存逻辑:理论上可以尝试缓存特定 POST 请求(如搜索 API),但这非常复杂且容易出错(需严格处理缓存键、失效、副作用),强烈不推荐,除非有极其特殊和可控的场景。

    • 部分高级 CDN 允许在边缘节点运行自定义逻辑(如 Cloudflare Workers, AWS Lambda@Edge, Fastly Compute@Edge)。

    • 开发者可以编写代码在这些边缘环境中:

    • 标准 CDN 缓存配置界面通常不提供为非 GET/HEAD 方法配置缓存的选项。

关键总结

  • 缓存:主要针对 GET