কিছু টুইট করার পরে আমি মনে করি এটি কোয়েরি স্ট্রিং হ্যাক ছাড়াই কাজ করেছে। এখানে আরও তথ্য: http://docs.aws.amazon.com/AmamaonCloudFront/latest/DeveloperGuide/RequestAndResponseBehavierS3Origin.html#RequestS3-cors
আমি আমার পুরো সেটআপটি দিয়ে যাচ্ছি যাতে আমি কী করেছি তা সহজেই দেখা যায়, আশা করি এটি অন্যকে সহায়তা করে।
পটভূমির তথ্য: আমি একটি রেল অ্যাপ্লিকেশন ব্যবহার করছি যা এস 3-এ সম্পদ রাখার জন্য asset_sync রত্ন রয়েছে। এর মধ্যে হরফ রয়েছে।
এস 3 কনসোলের মধ্যে আমি আমার বালতি, বৈশিষ্ট্য এবং 'সম্পাদনা কর্স কনফিগারেশন' এ এখানে ক্লিক করেছি:
টেক্সেরিয়ার ভিতরে আমার এমন কিছু রয়েছে:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>https://*.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
তারপরে ক্লাউডফ্রন্ট প্যানেলে ( https://console.aws.amazon.com/cloudfront/home ) আমি একটি বিতরণ তৈরি করেছি, এমন একটি উত্স যুক্ত করেছি যা আমার এস 3 বালতিতে নির্দেশ করেছে
তারপরে S3 ভিত্তিক উত্স আমি সেটআপে নির্দেশ করতে একটি ডিফল্ট পাথের জন্য একটি আচরণ যুক্ত করল। আমি যা করেছি তা হ'ল হোয়াইটলিস্ট শিরোনামগুলিতে ক্লিক করে যুক্ত করা হয়েছিল Origin
:
এখন যা ঘটে তা হ'ল নিম্নলিখিতটি, যা আমি বিশ্বাস করি সঠিক:
1) পরীক্ষা করুন যে এস 3 হেডারগুলি সঠিকভাবে সেট করা হচ্ছে
curl -i -H "Origin: https://example.com" https://s3.amazonaws.com/xxxxxxxxx/assets/fonts/my-cool-font.ttf
HTTP/1.1 200 OK
x-amz-id-2: Ay63Qb5uR98ag47SRJ91+YALtc4onRu1JUJgMTU98Es/pzQ3ckmuWhzzbTgDTCt+
x-amz-request-id: F1FFE275C0FBE500
Date: Thu, 14 Aug 2014 09:39:40 GMT
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Access-Control-Allow-Credentials: true
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
Cache-Control: public, must-revalidate, proxy-revalidate, max-age=180
Last-Modified: Mon, 09 Dec 2013 14:29:04 GMT
ETag: "98918ee7f339c7534c34b9f5a448c3e2"
Accept-Ranges: bytes
Content-Type: application/x-font-ttf
Content-Length: 12156
Server: AmazonS3
2) চেক ক্লাউডফ্রন্ট শিরোনামগুলির সাথে কাজ করে
curl -i -H "Origin: https://example.com" https://xxxxx.cloudfront.net/assets/fonts/my-cool-font.ttf
HTTP/1.1 200 OK
Content-Type: application/x-font-ttf
Content-Length: 12156
Connection: keep-alive
Date: Thu, 14 Aug 2014 09:35:26 GMT
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Access-Control-Allow-Credentials: true
Cache-Control: public, must-revalidate, proxy-revalidate, max-age=180
Last-Modified: Mon, 09 Dec 2013 14:29:04 GMT
ETag: "98918ee7f339c7534c34b9f5a448c3e2"
Accept-Ranges: bytes
Server: AmazonS3
Vary: Origin
X-Cache: Miss from cloudfront
Via: 1.1 77bdacfea247b6cbe84dffa61da5a554.cloudfront.net (CloudFront)
X-Amz-Cf-Id: cmCxaUcFf3bT48zpPw0Q-vDDza0nZoWm9-_3qY5pJBhj64iTpkgMlg==
(মনে রাখবেন উপরেরটি ক্লাউডফ্রন্ট থেকে মিস ছিল কারণ এই ফাইলগুলি 180 সেকেন্ডের জন্য ক্যাশে করা হয়েছে তবে একইগুলি হিট-এ কাজ করছে)
3) ভিন্ন উত্সের সাথে ক্লাউডফ্রন্টটি হিট করুন (তবে একটি যা এস 3 বাল্টির জন্য সিওআরএসে অনুমোদিত) - এটি Access-Control-Allow-Origin
ক্যাশেড নয়! হ্যাঁ!
curl -i -H "Origin: https://www2.example.com" https://xxxxx.cloudfront.net/assets/fonts/my-cool-font.ttf
HTTP/1.1 200 OK
Content-Type: application/x-font-ttf
Content-Length: 12156
Connection: keep-alive
Date: Thu, 14 Aug 2014 10:02:33 GMT
Access-Control-Allow-Origin: https://www2.example.com
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Access-Control-Allow-Credentials: true
Cache-Control: public, must-revalidate, proxy-revalidate, max-age=180
Last-Modified: Mon, 09 Dec 2013 14:29:04 GMT
ETag: "98918ee7f339c7534c34b9f5a448c3e2"
Accept-Ranges: bytes
Server: AmazonS3
Vary: Origin
X-Cache: Miss from cloudfront
Via: 1.1 ba7014bad8e9bf2ed075d09443dcc4f1.cloudfront.net (CloudFront)
X-Amz-Cf-Id: vy-UccJ094cjdbdT0tcKuil22XYwWdIECdBZ_5hqoTjr0tNH80NQPg==
উপরে নোট করুন যে ডোমেনটি কোয়েরি স্ট্রিং হ্যাক ছাড়াই সাফল্যের সাথে পরিবর্তিত হয়েছে।
আমি যখন অরিজিন শিরোনাম পরিবর্তন করি তখন X-Cache: Miss from cloudfront
প্রথম অনুরোধটিতে সর্বদা একটি মনে হয় তারপরে আমি প্রত্যাশাকে পেয়ে যাইX-Cache: Hit from cloudfront
পিএস এটি লক্ষণীয় যে কার্ল- I (মূলধন I) করার সময় অ্যাক্সেস-নিয়ন্ত্রণ-অনুমোদন-অরিজিনের শিরোনামগুলি কেবলমাত্র একটি প্রধান হিসাবে দেখাবে না, আমি এটি জিইটি তৈরি করতে এবং স্ক্রোল আপ করতে করব i
Access-Control-Allow-Origin
শিরোনামটি ক্যাশ করে সিআরএসকে অকার্যকর করে দেয় যখন পরবর্তী সাবডোমেনের মাধ্যমে পরবর্তী অনুরোধ করা হয়?