我有一个通过 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.
答案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 身份验证。