我試圖通過cloudfront訪問我的s3資產,並且我發送了這個ajax請求並傳入了這些set-cookie標頭。Cloudfront CORS訪問問題
我能夠生成簽名的url,它完全正常工作,但我真正想做的是使用簽名的cookie方法來訪問資源。
以下是我的測試代碼,但我得到的是(再沒有「訪問控制允許來源」標頭出現在所請求的資源。)
function getCookie(name)
{
var re = new RegExp(name + "=([^;]+)");
var value = re.exec(document.cookie);
return (value != null) ? decodeURIComponent(value[1]) : null;
}
// I try to use XMLHttpRequest
// ---------------------------------------------
var oReq = new XMLHttpRequest();
oReq.open("GET", 'http://a_cloudfront_url/mystuff.json', false);
oReq.setRequestHeader("Set-Cookie", "Domain=my_domain.com; Path=/; Secure; HttpOnly; CloudFront-Expires="+getCookie('CloudFront-Expires'));
oReq.setRequestHeader("Set-Cookie", "Domain=my_domain.com; Path=/; Secure; HttpOnly; CloudFront-Key-Pair-Id="+getCookie('CloudFront-Key-Pair-Id'));
oReq.setRequestHeader("Set-Cookie", "Domain=my_domain.com; Path=/; Secure; HttpOnly; CloudFront-Signature="+getCookie('CloudFront-Signature'));
oReq.send();
// I also try to use the jquery ways
// ---------------------------------------------
$.ajax({
type: 'GET',
url: 'http://a_cloudfront_url/mystuff.json',
xhrFields: {
withCredentials: true
},
beforeSend: function(xhr){
xhr.setRequestHeader("Set-Cookie", "Domain=my_domain.com; Path=/; Secure; HttpOnly; CloudFront-Expires="+getCookie('CloudFront-Expires'));
xhr.setRequestHeader("Set-Cookie", "Domain=my_domain.com; Path=/; Secure; HttpOnly; CloudFront-Key-Pair-Id="+getCookie('CloudFront-Key-Pair-Id'));
xhr.setRequestHeader("Set-Cookie", "Domain=my_domain.com; Path=/; Secure; HttpOnly; CloudFront-Signature="+getCookie('CloudFront-Signature'));
},
success: function (data) {
console.log('success');
},
error: function (e) {
console.log('Error',e);
}
});
但所有給只有我403 ......
下面是我的響應頭的樣子...
// The following is my response header
// ---------------------------------------------
Connection:keep-alive
Content-Length:146
Content-Type:text/xml
Date:Tue, 19 May 2015 19:22:04 GMT
Server:CloudFront
Via:1.1 blah-blah.cloudfront.net (CloudFront)
X-Amz-Cf-Id:GNQKtum1Rz4eblah-blahWqGQXPOtowD1ZrBbIAx6aGB0j_AMbA==
X-Cache:Error from cloudfront
以下是我的請求頭的樣子...
// The following is my request header
// ---------------------------------------------
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,zh-TW;q=0.6,zh;q=0.4
Access-Control-Request-Headers:set-cookie
Access-Control-Request-Method:GET
Connection:keep-alive
Host:my_cloud_front_doman.cloudfront.net
Origin:http://my_domain.com
Referer:http://my_domain.com/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4)
任何幫助表示讚賞。我和亞馬遜代表談過,他們說clouldfront配置安裝正確,我不知道我的代碼有什麼問題。
那麼,你有沒有做任何事情來啓用CORS? – CBroe
你能告訴我們有關通過電線發送的標題的全部細節嗎? – Marged
@CBroe,是的,我有,我甚至有亞馬遜團隊來審查我們的雲端配置。 –