amazon-s3 - 使用 Lambda@Edge 和 Amazon CloudFront 为所有路由(错误路由)添加 HTTP 安全标头
问题描述
我在 S3 存储桶中使用了一个带有云端 CDN 的反应应用程序。我添加了一个 lambdaedge 来添加一个安全标头
headers['x-frame-options'] = [{key: 'X-Frame-Options', value: 'DENY'}];
headers['x-xss-protection'] = [{key: 'X-XSS-Protection', value: '1; mode=block'}];
但它不适用于不同的路线,例如 mySite.com/login
当我检查 cloudFront 中的错误行为时,没有添加标头的选项
为什么这个页面/login
有错误?由于反应路由器在 aws s3 存储桶中不起作用
解决方案
我解决这个问题的方法是实现一个源请求 Lambda@Edge 函数,该函数event.Records[0].cf.request.uri
根据 S3 源中已知文件和路径的白名单验证值。如果路径与白名单不匹配,它会更新/index.html
允许 React 应用程序处理请求的 uri 值。
通过此更改,将不再有任何 404 请求,这意味着响应将成功通过添加响应标头的原始响应 Lambda@Edge 函数。
推荐阅读
- markdown - 使用 Jekyll 生成“参数”页面
- python - skimage.util 中错误的像素值缩放(替代 Scipy 中的字节缩放)
- amazon-web-services - AWS EB Flask 应用程序部署无法获得 HTTP 标头授权
- c - 如何使用 OpenMP 减少循环中 FFT 的执行时间?
- spring - 对 .NET Core REST api 的大型 POST 请求的 Spring RestTemplate 404 错误
- sql - 这个查询有什么问题?双引号错误
- c# - 我在行走和跑步动画之间切换的脚本不起作用
- java - 以降序交替排序2个整数数组列表
- angular - 如何从Angular中的另一个模块动态渲染组件
- c# - 为什么xmlns出现在DGML文件写入的父节点?