当我们使用https url访问ELB的后端api时,抛出错误
跨域请求被阻止:“同源起源”策略禁止读取https://abcde-1xx8x3xx3x.ap-south-1.elb.amazonaws.com/api/auth/testapi处的远程资源。 (原因:CORS请求未成功。)
前端: 我们正在使用Cloudfront从S3提供前端。 cloudfront URL链接有效,并且页面可以正常加载。
在行为部分的云端,
后端: 后端nodejs rest api在EC2中,并通过Classic Load Balancer面向互联网交付。 EC2在VPC中。我们正在使用ELB URL进行API测试。该API可在邮递员中使用。在这里,我们将负载均衡器协议用作HTTPS,将实例协议用作HTTP。对此附有SSL证书。
在nodejs应用程序上,我们将标题设置如下
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Request-Method', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.header('Access-Control-Allow-Headers','Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With, Access-Control-Allow-Origin, Origin, X-HTTP-Method-Override, Accept, X-Access-Token');
res.setHeader('Access-Control-Allow-Credentials', 'true');
在使用提取API的情况下,在fontend代码上设置模式:'cors'
试图查看其他类似的cors问题,但没有任何帮助。
有人可以建议我如何解决此问题吗?我在这里想念什么?还是有更好的方法来处理生产?
答案 0 :(得分:0)
这实际上不是CORS错误。这是一个连接问题,碰巧涉及CORS请求。
Reason: CORS request did not succeed
使用CORS的HTTP请求失败,因为HTTP连接在网络或协议级别均失败。该错误与CORS没有直接关系,而是某种基本的网络错误。
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSDidNotSucceed
您大概已经对URL https://abcde-1xx8x3xx3x.ap-south-1.elb.amazonaws.com/api/auth/testapi
进行了一些修改,但是请注意,不可能在以.elb.amazonaws.com
结尾的URL上使用HTTPS。这是因为无法获得amazonaws.com
域名的SSL证书-这是Amazon的域名,而不是您的域名。您无法获得并非由您真正控制的域的SSL证书。您需要在此处拥有自己的域,并需要一个与之匹配的SSL证书(附加到平衡器)。
您应该发现,通过直接将此API URL打孔到浏览器的地址栏中,还会 出现错误。该错误将不是CORS错误,而是您需要解决的实际错误。
还请注意,您所描述的错误不涉及您的S3和CloudFront设置。