【发布时间】:2017-07-21 05:30:21
【问题描述】:
我正在向 Cloudfront CDN 请求图像。每次我从客户端发出请求时都会收到此错误:
从原点访问
https://cdn.mywebsite/image.png的图像http://localhost:5000已被 CORS 策略阻止:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点http://localhost:5000使用权。响应的 HTTP 状态代码为 403。
我在服务器上使用 express 并添加了以下内容以允许访问但仍然没有运气..
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', "*");
res.setHeader('Access-Control-Allow-Methods', 'GET');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
next();
})
任何建议将不胜感激!
================================================ =============================
更新
嗨@jfriend00
所以我的目标是通过 CF CDN 提供受保护的内容。
为此,我使用以下模块向客户端发送签名的 Cookie。
var cf = require('aws-cloudfront-sign')
var options = {keypairId: 'keypairId', privateKeyPath: '/foo/bar'}
var signedCookies = cf.getSignedCookies('https://cdn.mywebsite.com/*', options);
for(var cookieId in signedCookies) {
res.cookie(cookieId, signedCookies[cookieId]);
}
然后我只是从客户端向 cdn 发出请求以获取图像:
<img src="https://cdn.mywebsite.com/image.png" crossorigin="anonymous" alt="test picture">
此时控制台显示Access-Control-Allow-Origin错误。
注意:
var signedUrl = cf.getSignedUrl('https://cdn.mywebsite.com/image.png', options)
此signedUrl 在直接访问时有效,但如果我从本地主机或它自己的网站发出请求,则无效。
【问题讨论】:
标签: node.js express cors cdn amazon-cloudfront