如何在 nodejs express 重定向上启用 CORS?
Posted
技术标签:
【中文标题】如何在 nodejs express 重定向上启用 CORS?【英文标题】:How to enable CORS on nodejs express redirect? 【发布时间】:2019-05-15 08:43:18 【问题描述】:我在后端使用 nodejs express 作为我的 API。我想知道如何在 redirect
方法上启用 CORS。
以下是我的快速重定向代码:
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
有关。如何使重定向起作用?
【问题讨论】:
How to allow CORS?的可能重复 这是不同的,因为我的问题是关于重定向而不是直接连接 【参考方案1】:这与您的后端或前端无关,您必须在 S3 存储桶中添加 CORS 策略
请按照以下步骤在您的 S3 存储桶上启用 CORS
登录 AWS 管理控制台并通过 https://console.aws.amazon.com/s3/ 打开 Amazon S3 控制台。
在 Bucket name 列表中,选择要为其创建存储桶策略的存储桶的名称。
选择权限,然后选择 CORS 配置。
在 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>
-
选择保存。
这应该适合你。
参考:https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html
【讨论】:
这是否适用于res.redirect
?据我了解和知道 cors 不适用于redirect
,但可以用于正常请求。
这里最好的选择是从前端返回url并重定向。
经过测试并与 res.redirect 配合良好。 CORS 策略必须在目的地而不是源上完成
我不知道你是如何让它工作的,但res.redirect(url)
对我不起作用。在这里查看我的问题示例***.com/questions/59758422/…
您必须在要重定向用户的目标网址上启用 cors,您将重定向到未启用 cors 的 google.com以上是关于如何在 nodejs express 重定向上启用 CORS?的主要内容,如果未能解决你的问题,请参考以下文章
express - nodejs - 如果在子域中,则保留 URL 而不是重定向
使用 nodejs/express 登录后将用户重定向到 Angular 应用程序