Saya memiliki satu instans EC2 yang berjalan di belakang ELB, yang mana saya menggunakan AWS Certificate Manager (ACM) untuk mengaktifkan HTTPS.
Seperti yang disarankan di beberapa tempat, saya memetakan HTTP (Port 80) dan HTTPS (443) ke HTTP instance saya (Port 80).
Saya juga mengaktifkan pemaksaan koneksi aman dengan menambahkan baris ini ke file .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Semua itu bekerja dengan baik. Semua halaman menampilkan konten aman seperti yang diharapkan, tidak ada peringatan di Konsol tentang konten campuran.
Hanya di halaman tempat saya melakukan panggilan AJAX saya mendapatkan kesalahan tentang konten campuran dan hanya di Chrome. FireFox berfungsi seperti yang diharapkan tetapi Konsol masih menunjukkan kesalahan.
Kesalahan (FireFox):
Kebijakan Keamanan Konten: Meningkatkan permintaan tidak aman 'http://example.com/myapi/get_company/?code=abcd&limit=8' untuk menggunakan 'https'
Kesalahan (Chrome):
Konten Campuran: Laman di 'https://example.com/mypage' dimuat melalui HTTPS, namun meminta titik akhir XMLHttpRequest tidak aman 'http://example.com/myapi/get_company/?code=abcd&limit=8'. Permintaan ini telah diblokir; konten harus disajikan melalui HTTPS.
Saya membuka chrome://net-internals/
dan dari apa yang saya lihat ada dua panggilan yang pertama menerima HTTP 301 Permanent Redirect
dan yang kedua gagal karena pengalihan menunjuk ke halaman HTTP, bukan HTTPS.
Panggilan AJAX terlihat seperti ini:
$url = "/myapi/get_company?code=" + e;
apiJson = $.ajax({
url: $url,
dataType: 'json',
data:{
limit:8
},
success: function(data) { //Some code here },
error: function(jqXHR, textStatus, errorThrown) { //Some code here }
});
Saya juga mencoba memberikan URL lengkap termasuk protokolnya tetapi tidak ada bedanya.