如何在nodejs express重定向时启用CORS?

8

我在后端使用nodejs express作为我的API。我想知道如何在redirect方法上启用CORS。

下面是我的express重定向代码:

res.redirect(redirectUrl);

当客户端发送请求到上述API时,它将重定向请求到一个名为s3的地方,但我遇到了以下错误:
Access to XMLHttpRequest at 'https://s3-ap-southeast-
2.amazonaws.com/index.html' (redirected from 
'http://localhost:9090/v0/api') from origin 'http://localhost:9090' has 
been blocked by CORS policy: Response to preflight request doesn't pass 
access control check: No 'Access-Control-Allow-Origin' header is present on
 the requested resource.

前端正在运行在http://localhost:9090下,并且前端域名已经添加到S3存储桶的CORS中。如果我直接从浏览器发送请求到https://s3-ap-southeast-2.amazonaws.com/index.html,它可以正常工作。因此,我认为问题出在nodejs express redirect方法上。如何启用重定向的CORS?
我知道如何启用CORS,但我的问题与redirect有关。如何使重定向起作用?

1
可能是如何允许CORS?的重复问题。 - Harshal Yeole
2
它不同的原因是我的问题是关于重定向而不是直接连接。 - Joey Yi Zhao
1个回答

4

这与您的后端或前端无关,您需要在S3存储桶中添加CORS策略。

请按以下步骤在您的S3存储桶上启用CORS:

  1. 登录AWS管理控制台,打开Amazon S3控制台,网址为https://console.aws.amazon.com/s3/

  2. 在Bucket名称列表中,选择要创建Bucket策略的Bucket名称。

  3. 选择“权限”,然后选择“CORS配置”。

  4. 在CORS配置编辑器文本框中,输入或复制粘贴新的CORS配置,或编辑现有配置以使其看起来像下面的样子。

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
  1. 选择保存。

这应该对你有用。

参考资料: https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html


这会在res.redirect中起作用吗?据我了解和知道,Cors不适用于redirect,但适用于普通请求。 - Junius L
最好的选择是从前端返回URL并进行重定向。 - Junius L
1
已测试并可以与res.redirect一起正常工作。CORS策略必须在目标上完成,而不是在源上完成。 - Sarfraaz
我不知道你是怎么让它工作的,但 res.redirect(url) 对我来说不起作用。请参考我的问题,其中包含示例:https://stackoverflow.com/questions/59758422/getting-cors-error-when-redirecting-with-express-server - Junius L
您必须在重定向用户的目标网址上启用CORS,您正在重定向到未启用CORS的Google.com。 - Sarfraaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接