คำถามติดแท็ก iframe

'iframe' คือองค์ประกอบ HTML ที่สร้าง "เฟรมแบบอินไลน์" ภายในเอกสารซึ่งอนุญาตให้แสดงเอกสารแยกต่างหากในหน้าเดียวกัน

13
การป้องกันการแคช iframe ในเบราว์เซอร์
คุณจะป้องกันไม่ให้ Firefox และ Safari แคชเนื้อหา iframe ได้อย่างไร ฉันมีหน้าเว็บธรรมดาที่มี iframe ไปยังหน้าในไซต์อื่น ทั้งเพจด้านนอกและเพจด้านในมีส่วนหัวการตอบสนอง HTTP เพื่อป้องกันการแคช เมื่อฉันคลิกปุ่ม "ย้อนกลับ" ในเบราว์เซอร์หน้าภายนอกจะทำงานได้อย่างถูกต้อง แต่ไม่ว่าจะเป็นอย่างไรเบราว์เซอร์จะดึงแคชของหน้า iframed เสมอ IE ทำงานได้ดี แต่ Firefox และ Safari ทำให้ฉันมีปัญหา หน้าเว็บของฉันมีลักษณะดังนี้: <html> <head><!-- stuff --></head> <body> <!-- stuff --> <iframe src="webpage2.html?var=xxx" /> <!-- stuff --> </body> </html> varตัวแปรเสมอเปลี่ยนแปลง แม้ว่า URL ของ iframe จะมีการเปลี่ยนแปลง (ดังนั้นเบราว์เซอร์ควรส่งคำขอใหม่ไปยังหน้านั้น) …

9
การปรับขนาด iframe ข้ามโดเมน
ฉันจะปรับขนาด iframe จากโดเมนอื่นได้อย่างไร - แก้ไข เลื่อนลงเพื่อดูวิธีแก้ปัญหา .. หรืออ่านวิธีการไม่ทำสิ่งนี้ หลังจากแฮ็กโค้ดหลายชั่วโมงข้อสรุปก็คือไม่สามารถเข้าถึงสิ่งใด ๆ ภายใน iframe ได้แม้แต่แถบเลื่อนที่แสดงผลบนโดเมนของฉัน ฉันได้ลองใช้เทคนิคมากมายแล้วก็ไม่เกิดประโยชน์ เพื่อช่วยคุณประหยัดเวลาอย่าแม้แต่ไปตามเส้นทางนี้เพียงแค่ใช้ sendMessages สำหรับการสื่อสารข้ามโดเมน มีปลั๊กอินสำหรับ HTML <5 ที่ฉันใช้ - ไปที่ด้านล่างเพื่อดูตัวอย่างที่ดี :) ไม่กี่วันที่ผ่านมาฉันพยายามรวม iframe เข้ากับไซต์ นี่เป็นวิธีแก้ปัญหาระยะสั้นในขณะที่อีกด้านหนึ่งพัฒนาและ API (อาจใช้เวลาหลายเดือน ... ) และเนื่องจากนี่เป็นวิธีการแก้ปัญหาระยะสั้นที่เราต้องการใช้ easyXDM - ฉันสามารถเข้าถึงโดเมนอื่นได้ แต่ก็ยากพอที่จะขอให้พวกเขา เพิ่ม p3p header ตามที่เป็น ..... 3 iframe ทางออกที่ใกล้เคียงที่สุดที่ฉันพบคือ 3 iframes - แต่มันเป็นไปในแง่ของ Chrome …

5
วิธีเปรียบเทียบ 2 iframes และรับความแตกต่างทางสายตา
กรณี ฉันมี iframe 2 ตัวและทั้งคู่มี divs และตัวควบคุมอื่น ๆ มากมายดังนั้น iframe ทั้งสองนั้นก็เหมือนเว็บไซต์ HTML ขนาดกลาง ฉันต้องการเปรียบเทียบทั้งสองและค้นหาความแตกต่าง ฉันคิดว่าตัวเลือกต่าง ๆ ที่นี่: โซลูชันที่ 1:ถ่ายภาพเต็มหน้าจอ 2 iframes และเปรียบเทียบภาพหน้าจอทั้งสองโดยใช้ห้องสมุดหมอนของ Python ซึ่งวาดตารางบนพื้นที่ไม่ตรงกันในภาพหน้าจอ แต่ที่นี่ปัญหาคือฉันไม่พบรหัสใด ๆ บนอินเทอร์เน็ตที่สามารถจับภาพหน้าจอ iframe เต็มรูปแบบ ( ฉันมี iframe ที่ยาวพร้อมแถบเลื่อน ) ฉันลองคำตอบเกือบทั้งหมดบน SO แต่ทั้งหมดนั้นใช้งานได้ในหน้าปกติ แต่ไม่ใช่สำหรับ iframe การอ้างอิง : https://blog.rinatussenov.com/automating-manual-visual-regression-tests-with-python-and-selenium-be66be950196 โซลูชันที่ 2: รับโค้ด HTML อย่างใดอย่างหนึ่งจากทั้ง iframe และเปรียบเทียบ แต่จะไม่ง่ายในการวิเคราะห์ผลลัพธ์เพราะจะพบรหัส …

2
ฉันสามารถใช้ window.location.replace ใน iframe ได้หรือไม่
เราสามารถใช้window.location.replaceเพื่อหลีกเลี่ยงประวัติและกำหนดเป้าหมายจุดยึดบนหน้าโดยไม่ต้องโหลดหน้าใหม่แต่ไม่ใช่ iframes? ปัญหาคือการละเมิด CSP (นโยบายความปลอดภัยของเนื้อหา)ซึ่งscript-src 'unsafe-inline'ต้องเปิดใช้งานสถานะ ยกเว้นว่าฉันไม่ได้กำหนด CSP และแม้ว่าฉันจะกำหนดไว้และให้script-src 'unsafe-inline'มันยังคงให้ข้อผิดพลาดการละเมิดเดียวกัน ผลลัพธ์เดียวกันคือ 11 / chrome / ff Iframe บนโดเมนเดียวกัน(ในไดเรกทอรีเดียวกัน) กำหนดเป้าหมาย iframe ในคอนโซลและใช้window.location.replace('/samepage.html#onpage_anchor')ในคอนโซล มันได้ผล. มันกำหนดเป้าหมายที่สมอหน้าโดยไม่ต้องโหลดหน้าซ้ำและไม่มีประวัติ ใส่รหัสเดียวกันแบบอินไลน์ในลิงก์จุดยึดและใช้งานได้ ใช้รหัสเดียวกันในสคริปต์ภายนอกรับข้อผิดพลาดการละเมิด csp วิธีนี้ใช้ได้ผลดีหากไม่ได้อยู่ใน iframe ฉันพยายามสร้าง CSPจะอนุญาตให้มีการดำเนินการ แต่ไม่ได้ที่สุดอนุญาตนโยบายการรักษาความปลอดภัยข้อมูลที่เป็นไปได้จะช่วยให้มัน แก้ไข: ดังนั้นฉันจึงรวบรวมตัวอย่างบน plunker ซึ่งอนุญาตให้มีหลายไฟล์ดังนั้นฉันจึงสามารถใช้href ที่เหมาะสมซึ่งอ้างอิงหน้าแม่ / ลูก หมายเหตุเกี่ยวกับตัวอย่างของผู้รวบรวม: ปัญหาไม่ได้ทำซ้ำในตัวอย่างเหล่านี้ สคริปต์ทำงานได้อย่างสมบูรณ์แบบแม้ใน iframe อย่างไรก็ตามรหัสเดียวกันไม่สามารถใช้งานได้บนเซิร์ฟเวอร์ภายในเครื่องของฉันหรือเมื่อฉันเรียกใช้งานมันบน VPS ฉันสงสัยว่าการละเมิด CSP ไม่ได้รับการทริกเกอร์จากผู้รวบรวมเพราะผู้รวบรวมกำลังแสดงเนื้อหาไปยังเบราว์เซอร์ผ่านเลเยอร์สิ่งที่เป็นนามธรรมบางประเภท ครั้งแรกที่คุณคลิกลิงก์หีบเพลงในพาเรนต์มันจะทำให้รีเฟรช นี่เป็นเพราะวิธีการโหลดหน้าเว็บในตอนแรกมันไม่ได้อ้างอิง index.html …

4
วิธีการทำให้การตอบสนองของ iframe โดยไม่มีการสมมติอัตราส่วนกว้างยาว?
จะทำให้ iframe ตอบสนองได้อย่างไรโดยไม่ต้องสมมติอัตราส่วนกว้างยาว? ตัวอย่างเช่นเนื้อหาอาจมีความกว้างหรือความสูงซึ่งไม่เป็นที่รู้จักก่อนแสดงผล หมายเหตุคุณสามารถใช้ Javascript ตัวอย่าง: <div id="iframe-container"> <iframe/> </div> ปรับขนาดนี้iframe-containerเพื่อให้เนื้อหาของมันพอดีกับภายในโดยไม่มีพื้นที่เพิ่มเติมกล่าวคือมีพื้นที่ว่างเพียงพอสำหรับเนื้อหาจึงสามารถแสดงได้โดยไม่ต้องเลื่อน แต่ไม่มีพื้นที่มากเกินไป คอนเทนเนอร์ล้อม iframe อย่างสมบูรณ์ สิ่งนี้แสดงวิธีการตอบสนอง iframe โดยสมมติว่าอัตราส่วนภาพของเนื้อหาคือ 16: 9 แต่ในคำถามนี้อัตราส่วนภาพแปรผัน

2
Safari 13+ iframe บล็อกคุกกี้ CORS
Safari flat out ไม่อนุญาตให้คุณตั้งค่าคุกกี้ใน iframes ของโดเมนที่แตกต่างจากโดเมนหลักส่วนหัว CORS ฝั่งเซิร์ฟเวอร์จะถูกสาป ในการชี้แจง: ผู้ใช้อยู่ใน domainA.com iframe สำหรับ domainB.com เปิดอยู่และพยายามตรวจสอบสิทธิ์ผู้ใช้ใน domainB.com ภายใน iframe ส่วนหัว Set-Cookie จะถูกส่งคืนจากเซิร์ฟเวอร์ภายใน domainB.com iframe พร้อมด้วยส่วนหัวที่จำเป็นทั้งหมด แต่ Safari ไม่ได้ส่งสายกลับในการโทรครั้งต่อไป วิธีแก้ปัญหาแบบเก่ากำลังส่งฟอร์มจาก iframe และตั้งค่าคุกกี้ในการตอบกลับ ฉันเดาว่าพวกเขาชอบความจริงที่ว่าผู้ใช้คลิกที่สิ่งที่ต้องการส่งแบบฟอร์ม คุณจะต้องสำรวจความคิดเห็นของคุกกี้เพื่อดูว่าเมื่อใดที่การตอบกลับกลับมาเนื่องจากการส่งแบบฟอร์มไม่มีการเรียกกลับและในกรณีของคุกกี้ HttpOnly ที่คุณทำไม่ได้ แต่เดี๋ยวก่อนทำงานได้! จนกว่ามันจะไม่ จากนั้นวิธีแก้ปัญหาล่าสุดได้เปลี่ยนเส้นทางผู้ใช้ไปยังโดเมน iframe ในหน้าต่าง / แท็บใหม่การตั้งค่าคุกกี้แบบสุ่มที่นั่นและหลังจากนั้นเป็นต้นมาโดเมนย่อยนั้น "เชื่อถือได้" ภายใน iframe อีกครั้งต้องคลิกเพื่อเปิดหน้าต่าง / แท็บใหม่และยังมีข้อบ่งชี้ที่มองเห็นได้ของการเปิดแท็บใหม่ ความปลอดภัยมากมาตรฐานเช่นนี้ และในตอนนี้เช่นเดียวกับ Safari …

1
ไม่สามารถตั้งค่าคุกกี้ใน iframe โดยใช้ Storage Access API บน Safari
ฉันมี iframe บนหน้าของฉัน ในฐานะที่เป็น Safari บล็อกคุกกี้ของบุคคลที่สามฉันพยายามใช้ Storage Access API ตามที่แนะนำที่นี่ภายใต้ 'คำแนะนำสำหรับนักพัฒนา': https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more / . ฉันได้คัดลอกรหัสต่อไปนี้จากเอกสาร : <script type="text/javascript"> window.addEventListener('load', () => { document.getElementById('test-button').addEventListener('click', () => { document.hasStorageAccess().then(hasAccess => { console.log('hasAccess: ' + hasAccess); if (!hasAccess) { return document.requestStorageAccess(); } }).then(_ => { console.log('Now we have first-party storage access!'); document.cookie = …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.