我正在开发一个使用 React 和 AWS S3 提供视频点播服务的网站。
我需要必须授权才能观看视频。
所以我考虑在请求时使用签名cookie。
使用 curl 请求成功。
curl -H 'Cookie:CloudFront-Policy=eyJTd*******************;CloudFront-Signature=b8wt************************************; CloudFront-Key-Pair-Id=AP**********' http://*********.cloudfront.net/hogehoge.m3u8
但我无法在 React 获得文件。
我的代码在那里。
export function Movie(){
document.cookie = `CloudFront-Key-Pair-Id=${"AP**************"}; `
document.cookie = `CloudFront-Policy=${"eyJT*****************"}; `
document.cookie = `CloudFront-Signature=${"b8wt****************"}; `
<ReactPlayer
url={"http://******.cloudfront.net/hogehoge.m3u8"}
controls
config={{
file: {
hlsOptions: {
xhrSetup: function(xhr: any, url: any) {
xhr.withCredentials = true // send cookies
}
}
}
}}
>
}
Chrome 上的错误消息(图片)
Request URL: http://*****.cloudfront.net/hogehoge.m3u8
Referrer Policy: strict-origin-when-cross-origin
Connection: keep-alive
Content-Length: 146
Content-Type: text/xml
Date: Tue, 27 Oct 2020 05:54:03 GMT
Server: CloudFront
Via: 1.1 *********.cloudfront.net (CloudFront)
X-Amz-Cf-Id: *******
X-Amz-Cf-Pop: NRT12-C3
X-Cache: Error from cloudfront
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: ja-JP,ja;q=0.9,en-JP;q=0.8,en;q=0.7,en-US;q=0.6
Connection: keep-alive
DNT: 1
Host: ********.cloudfront.net
Origin: http://localhost:3000
Referer: http://localhost:3000/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36
该请求看起来不包括 cookie。
我该如何解决这个问题?