微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CORS 问题:预检请求不允许重定向

如何解决CORS 问题:预检请求不允许重定向

我在 locahost:4000 上提供受第三方身份验证器 (Keycloak) 保护的 API 服务器。我想使用 ApolloClient 在前端访问我的 graphql api - 我已经在我的 apollo 服务器上设置了 cors: false,并且我的 express 应用程序具有以下配置:

const corsOptions = {
    origin: false,credentials: true
};

我的应用程序上也设置了 keycloak 中间件。但是,当我尝试通过 ApolloClient 访问 graphql API 时,出现以下错误

Access to fetch at 'http://localhost:4000/graphql' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

目前我在网络标签中的 /graphql 预检请求显示如下:

响应头

 Connection: keep-alive
    Content-Length: 278
    Content-Type: text/plain; charset=utf-8
    Date: Thu,08 Jul 2021 16:06:01 GMT
    Keep-Alive: timeout=5
    Location: http://localhost:8080/auth/realms/test/protocol/openid-connect/auth?client_id=keycloak-graphql-authenticator&state=b07855bf-bbff-4558-a249-52247b61b245&redirect_uri=http%3A%2F%2Flocalhost%3A4000%2Fgraphql%3Fauth_callback%3D1&scope=openid&response_type=code
    Set-Cookie: connect.sid=s%3ALYYq5RQLWsi8aZ28p8rdBS3HilhBhq3K.Wi6%2F9CKQqlrsZsHTtEAA6hFpkOYzHNBvHqv66KPbgIw; Path=/; HttpOnly
    vary: Accept

请求标头

Accept: */*
Accept-Encoding: gzip,deflate,br
Accept-Language: en-US,en;q=0.9
Access-Control-Request-Headers: content-type
Access-Control-Request-Method: POST
Connection: keep-alive
Host: localhost:4000
Origin: http://localhost:3000
Referer: http://localhost:3000/
Sec-Fetch-Dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-site

我在我的 express 应用程序中将 cors origin 设置为 false 并通过在我的 ApolloServer 配置中将 cors 选项设置为 false 关闭了 cors 选项是什么导致了这个问题?

在我的 Keycloak 设置中,localhost:4000localhost:3000 也是有效的重定向 URL。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。