Cloudfront Preflight 302 错误中的 S3 站点

Cloudfront Preflight 302 错误中的 S3 站点

我有一个通过 CloudFront 托管的静态 s3 网站。在其中,我发出一个请求,如果用户未登录,则会导致重定向。然后由于 302 错误,预检失败:

Access to fetch at 'https://saml-provided.not.real' (redirected from 'https://my-site.not.real') from origin 'https://my-cloudfront.not.real' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

我在 s3 中设置了 CORS 以允许所有来源: cors s3 设置

和以下一些 其他 线程像这样设置我的 CloudFront: 云锋 缓存策略

我已经无休止地运行了无效化,但我似乎无法让标头允许所有主机,它们只允许我的 CloudFront 来源: 响应标头

答案1

这里有一个类似的问题可能会帮助您回答您的问题: https://stackoverflow.com/questions/42168773/how-to-resolve-preflight-is-invalid-redirect-or-redirect-is-not-allowed-for

您想要确保当您的浏览器发出 cors 预检请求时,响应会返回 200。如果服务器在发送预检请求时由于任何原因尝试重定向,那么您将收到错误,这是由您的浏览器强制执行的。

您的错误消息显示:“https://saml-provided.not.real”(从“https://my-site.not.real”重定向)

我建议使用 CURL 构建预检请求,以查看发出请求时服务器的响应情况。如果您收到 3xx 状态代码,请按照该线程操作。

但是,这通常仅在尝试使用 fetch api 或来自 Web 应用程序的旧 XMLHttpRequest api 时才会出现问题。由于您的错误消息表明 SAML 以某种方式参与其中,因此我还会研究为什么您尝试使用除不执行预检请求的 <form> 元素中的普通旧 HTTP 帖子之外的其他方式进行 saml 身份验证。

相关内容