เหตุใดฉันจึงได้รับปัญหา“ โหลดเนื้อหาแบบผสมที่แอคทีฟ” ใน Firefox


350

เช้านี้เมื่ออัปเกรดเบราว์เซอร์ Firefox เป็นเวอร์ชันล่าสุด (จาก 22 ถึง 23) บางประเด็นสำคัญของ back office ของฉัน (เว็บไซต์) หยุดทำงาน

ดูที่บันทึก Firebug มีรายงานข้อผิดพลาดต่อไปนี้:

Blocked loading mixed active content "http://code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css"
Blocked loading mixed active content "http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"`

ท่ามกลางข้อผิดพลาดอื่น ๆ ที่เกิดจากหลังของทั้งสองข้างต้นไม่ได้ถูกโหลด

หมายถึงอะไรข้างต้นและฉันจะแก้ไขได้อย่างไร


เฮ้ฉันได้รับการแก้ไขเท่านั้นโดยทำ: googl.com/mapsกับ //www.googl.com/maps มันจะทำงานโดยไม่ปิดกั้นเนื้อหา
Ram Balwad

ลิงก์อีคอมเมิร์ซ is dead (ข้อผิดพลาด - ไม่พบหน้าที่คุณร้องขอ)
Soleil - Mathieu Prévot

คำตอบ:


417

ฉันพบโพสต์บล็อกนี้ซึ่งล้างข้อมูลบางอย่าง หากต้องการอ้างอิงบิตที่เกี่ยวข้องมากที่สุด:

เนื้อหาแบบแอคทีฟผสมถูกบล็อกโดยปริยายใน Firefox 23!

เนื้อหาแบบผสมคืออะไร
เมื่อผู้ใช้เยี่ยมชมหน้าที่ให้บริการผ่าน HTTP การเชื่อมต่อของพวกเขาจะเปิดขึ้นสำหรับการดักฟังและการโจมตีแบบ man-in-the-middle (MITM) เมื่อผู้ใช้เยี่ยมชมหน้าที่ให้บริการผ่าน HTTPS การเชื่อมต่อของพวกเขากับเว็บเซิร์ฟเวอร์จะได้รับการรับรองความถูกต้องและเข้ารหัสด้วย SSL ดังนั้นจึงป้องกันจากการโจมตีของผู้ดักฟังและการโจมตี MITM

อย่างไรก็ตามหากหน้า HTTPS มีเนื้อหา HTTP ส่วน HTTP สามารถอ่านหรือแก้ไขโดยผู้โจมตีแม้ว่าหน้าหลักจะให้บริการผ่าน HTTPS เมื่อหน้า HTTPS มีเนื้อหา HTTP เราเรียกเนื้อหานั้นว่า "มิกซ์" หน้าเว็บที่ผู้ใช้เยี่ยมชมนั้นถูกเข้ารหัสเพียงบางส่วนเท่านั้นเนื่องจากเนื้อหาบางส่วนถูกดึงมาไม่ได้เข้ารหัสผ่าน HTTP Mixed Content Blocker บล็อกการร้องขอ HTTP บางอย่างในหน้า HTTPS

ความละเอียดในกรณีของฉันคือเพื่อให้แน่ใจว่าjqueryมีดังต่อไปนี้ (หมายเหตุการลบโปรโตคอล):

<link rel="stylesheet" href="https://stackoverflow.com//code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css" type="text/css">
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"></script>

โปรดทราบว่า 'แก้ไข' ชั่วคราวคือคลิกที่ไอคอน 'โล่' ที่มุมบนซ้ายของแถบที่อยู่และเลือก 'ปิดใช้งานการป้องกันบนหน้านี้' แม้ว่าจะไม่แนะนำด้วยเหตุผลที่ชัดเจน

อัปเดต: ลิงก์นี้จากหน้าสนับสนุนของ Firefox (Mozilla) ก็มีประโยชน์ในการอธิบายสิ่งที่ถือเป็นเนื้อหาแบบผสมและตามที่ระบุในย่อหน้าข้างต้นจะให้รายละเอียดเกี่ยวกับวิธีแสดงหน้าโดยไม่คำนึงถึง:

เว็บไซต์ส่วนใหญ่จะยังคงทำงานตามปกติโดยที่คุณไม่ต้องดำเนินการใด ๆ

หากคุณต้องการอนุญาตให้แสดงเนื้อหาแบบผสมคุณสามารถทำได้อย่างง่ายดาย:

คลิกไอคอนรูปโล่เนื้อหาผสมในแถบที่อยู่และเลือกปิดใช้งานการป้องกันในหน้านี้จากเมนูแบบเลื่อนลง

ไอคอนในแถบที่อยู่จะเปลี่ยนเป็นรูปสามเหลี่ยมเตือนสีส้มไอคอนคำเตือนตัวตนเพื่อเตือนให้คุณทราบว่ากำลังแสดงเนื้อหาที่ไม่ปลอดภัย

หากต้องการย้อนกลับการกระทำก่อนหน้า (ปิดกั้นเนื้อหาแบบผสม) เพียงโหลดหน้าเว็บซ้ำ


82
วิธีที่ดีกว่าคือการลบโปรโตคอลโดยสิ้นเชิง: src="//code.jquery.com.... เบราว์เซอร์จะใช้โปรโตคอลที่โหลดเพจด้วย
เครื่องปั่น

17
โอ้! ทีม FF Dev ยิงตัวเองด้วยความคิดที่ยอดเยี่ยมการใช้งานที่ไม่ได้พูดถึง ไม่มีการคงอยู่สำหรับการปิดใช้งานหน้าเว็บและไม่มีรายการที่อนุญาต! (สำหรับเมื่อคุณรู้จักและไว้วางใจไซต์ที่มีเนื้อหาแบบผสม)
Raad

6
@Raad คุณไม่สามารถไว้ใจเว็บไซต์ที่มีเนื้อหาแบบผสม ในขณะที่เจ้าของไซต์อาจไร้เดียงสาเราเตอร์ทั้งหมดที่ถือคำขอ http อาจไม่ได้ ฉันจะส่งรายงานข้อผิดพลาดให้กับเจ้าของเว็บไซต์
alpha-mouse

6
@Rad และผู้ใช้หลายร้อยคนหากมีไซต์นับพันอยู่ในขั้นตอนการเปิดเผยส่วนหัวที่อาจมีข้อมูลส่วนบุคคลที่สามารถเข้ารหัสด้วยการเชื่อมต่อ SSL ... ตรงไปตรงมาฉันไม่เห็น FF Dev Team เป็นองค์กรที่ไม่รับผิดชอบในเรื่องนี้ สสาร ...
Assimilater

3
น่าผิดหวังอย่างยิ่งเมื่อปิดกั้นการกระทำที่ไม่เป็นอันตรายอย่างสมบูรณ์ การพูดของ zip! ฉันมีปลั๊กอินที่ใช้ Ziptastic เพื่อค้นหาเมืองและรัฐของรหัสไปรษณีย์ที่คุณป้อนลงในแบบฟอร์มที่อยู่ ปลั๊กอินนี้ใช้งานไม่ได้: สิ่งที่ฉันต้องทำคือใช้ API พักผ่อนเพื่อหยิบวัตถุ JSON ขนาดเล็ก - ไม่มีลูกเต๋า นี่คือ TSA ของการรักษาความปลอดภัยเบราว์เซอร์! ขอให้เราได้กางเกงของเรากลับมาเพราะอึ!
Chris Baker

137

หมายความว่าคุณกำลังโทรหา http จาก https คุณสามารถใช้src="//url.to/script.js"ในแท็กสคริปต์ของคุณและมันจะตรวจจับอัตโนมัติ

อีกวิธีหนึ่งคุณสามารถใช้ https ในของคุณsrcแม้ว่าคุณจะเผยแพร่ไปยังหน้า http สิ่งนี้จะหลีกเลี่ยงปัญหาที่อาจเกิดขึ้นที่กล่าวถึงในความคิดเห็น


1
เพียงบันทึกถ้าใช้บนเว็บเพจที่เก็บไว้ในเครื่องอาจทำให้เบราว์เซอร์ค้นหาสคริปต์อย่างไร้ผลทำให้การโหลดหน้าเว็บล่าช้าอย่างมีนัยสำคัญ
binaryfunt

52

ในกรณีที่ไม่มีคุณสมบัติรายการสีขาวคุณจะต้องเลือก "ทั้งหมด" หรือ "ไม่มีอะไร" คุณสามารถปิดการบล็อกเนื้อหาแบบผสมได้อย่างสมบูรณ์


ไม่มีทางเลือก

คุณจะต้องปิดการบล็อกเนื้อหาแบบผสมอย่างถาวรสำหรับโปรไฟล์ที่ใช้งานในปัจจุบัน

ใน "Awesome Bar" ให้พิมพ์ "about: config" หากนี่เป็นครั้งแรกของคุณคุณจะได้รับ "สิ่งนี้อาจทำให้การรับประกันของคุณเป็นโมฆะ!" ข่าวสาร

ใช่คุณจะต้องระวัง ใช่คุณสัญญา!

ค้นหาsecurity.mixed_content.block_active_content ตั้งค่าเป็นเท็จ


ทางเลือกทั้งหมด

คำตอบของiDevelAppนั้นยอดเยี่ยมมาก


1
คุณรู้หรือไม่ว่าจะเปิดใช้งานเนื้อหาแบบผสมใน Chrome
Faizan

1
@Faizan: จากคำตอบนี้ : "ในแถบที่อยู่ทางขวาสุดควรเป็นไอคอน 'shield' คุณสามารถคลิกที่เพื่อเรียกใช้เนื้อหาที่ไม่ปลอดภัย"
fuglede

27

ใส่<meta>แท็กด้านล่างลงใน<head>ส่วนของเอกสารของคุณเพื่อบังคับให้เบราว์เซอร์แทนที่การเชื่อมต่อที่ไม่ปลอดภัย (http) เป็นการเชื่อมต่อที่ปลอดภัย (https) วิธีนี้สามารถแก้ปัญหาเนื้อหาแบบผสมได้หากการเชื่อมต่อสามารถใช้ https ได้

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

หากคุณต้องการบล็อกให้เพิ่มแท็กด้านล่างลงใน<head>แท็ก:

<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">

1
ไม่ทำงานในโครเมี่ยม ทำงานใน Firefox upgrade-insecure-requestsดูเหมือนว่าจะอัพเกรดการโทร http tp https
Aniket Thakur

1
นี่เป็นความคิดที่ไม่ดีเหรอ? ไม่มีเหตุผลที่นโยบายความปลอดภัยมีอยู่?
medley56


10

มันได้รับข้อผิดพลาดเพราะความปลอดภัย สำหรับสิ่งนี้โปรดใช้ "https" ไม่ใช่ "http" ใน URL เว็บไซต์

ตัวอย่างเช่น :

   "https://code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css"
   "https://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"

7

ในหน้าเว็บที่เกี่ยวข้องซึ่งสร้างเนื้อหาแบบผสม https สำหรับการโทร http ซึ่งไม่สามารถเข้าถึงได้เราสามารถเพิ่มรายการต่อไปนี้ในรายการที่เกี่ยวข้องและกำจัดข้อผิดพลาดเนื้อหาแบบผสม

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

5

ฉันมีปัญหาเดียวกันนี้เพราะผมซื้อแม่แบบ CSS http://whatever.js.com/javascript.jsและมันคว้าจาวาสคริปต์ไฟล์จาวาสคริปต์ภายนอกผ่าน ฉันไปที่หน้านั้นในเบราว์เซอร์ของฉันแล้วเปลี่ยนเป็นhttps://whatever...ใช้ SSL และใช้งานได้ดังนั้นในแท็ก javascript HTML ของฉันฉันเพิ่งเปลี่ยน URL เพื่อใช้httpsแทนhttpและใช้งานได้


4

หากต้องการบังคับให้เปลี่ยนเส้นทางบนโปรโตคอล https คุณสามารถเพิ่มคำสั่งนี้ใน. htaccess บนโฟลเดอร์รูทได้

RewriteEngine on

RewriteCond %{REQUEST_SCHEME} =http

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

3

@Blenderความคิดเห็นเป็นวิธีที่ดีที่สุด ไม่ยากรหัสได้ทุกโปรโตคอลในรหัสที่มันจะยากที่จะเปลี่ยนแปลงถ้าคุณย้ายจากไปhttp httpsเนื่องจากคุณต้องแก้ไขและอัปเดตไฟล์ทั้งหมดด้วยตนเอง

นี่จะดีกว่าเสมอเพราะจะตรวจจับโปรโตคอลโดยอัตโนมัติ

src="//code.jquery.com

2

เราพบว่าคุณมีปัญหาในการรวมหรือผสมหน้าเว็บของคุณกับhttp : //www.example.com คุณสามารถแก้ไขได้โดยใส่// www .example.com แทน


สิ่งนี้ใช้ได้กับฉันขอบคุณ คุณช่วยอธิบายให้ฉันฟังว่าเกิดอะไรขึ้น?
Mantej Singh

2

ฉันประสบปัญหาเดียวกันเมื่อเว็บไซต์ของฉันเปลี่ยนจาก http เป็น https เราได้เพิ่มกฎสำหรับคำขอทั้งหมดเพื่อเปลี่ยนเส้นทาง http เป็น https

คุณต้องเพิ่มกฎการเปลี่ยนเส้นทางสำหรับการร้องขอระหว่างไซต์ แต่คุณต้องลบกฎการเปลี่ยนเส้นทางสำหรับ js / css ภายนอก


0

ฉันเพิ่งแก้ไขปัญหานี้โดยการเพิ่มรหัสต่อไปนี้ในส่วนหัว:

    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

-9

หากเซิร์ฟเวอร์แอปของคุณเป็น weblogic ให้ตรวจสอบว่ารายการ WLProxySSL ON นั้นมีอยู่ (และตรวจสอบให้แน่ใจว่าไม่ควรใส่ความคิดเห็น) ในไฟล์ weblogic.conf ในไดเรกทอรี conf ของเว็บเซิร์ฟเวอร์ จากนั้นรีสตาร์ทเว็บเซิร์ฟเวอร์มันจะทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.