当前位置: 首页 > 知识库问答 >
问题:

前端 - 笔记软件引用三方网页,为何不会造成跨域呢?

吉嘉珍
2023-08-07

我们知道前端网站1访问网站2的内容,会造成跨域,但是我有时候看到一些笔记软件,比如notion,可以引入一个外部的网站链接,

image.png

请问下为何这样的情况就不会造成跨域呢?

共有3个答案

萧鹏云
2023-08-07

引用外部网页的笔记软件通常使用的是 iframe 元素。通过将外部网页嵌入到一个 iframe 中,可以在笔记软件中显示该网页的内容。这种方式不会造成跨域问题的主要原因是,浏览器对于 iframe 的跨域访问有一定的宽容策略。
当然,linong的回答的可能性是存在的,笔记软件引用外部网页的内容是可能与爬虫有关的。众所周知,爬虫是一种自动化程序,用于从互联网上收集信息。如果笔记软件具有爬取网页内容的功能,那么从技术实现上来说的话,它是可以使用爬虫来获取外部网页的摘要或其他相关信息,并将其显示在笔记软件中。

浏览器在加载 iframe 时,并不会按照正常的跨域限制来处理。相反,它会允许 iframe 访问并显示来自其他域的内容,即使这些内容本身属于不同的域也可以。这种宽容策略是出于对用户体验和功能需求的考虑,使得用户可以方便地在笔记软件中引用和查看其他网页的内容。

虽然在笔记软件中引用外部网页时不会产生跨域问题,解决完这个问题之后,我再多补充一句吧,从网络安全上讲,仍然可能存在安全风险。因为该外部网页可能包含恶意代码或不安全的内容,对用户数据和隐私构成威胁。比如说这种:

// 示例:引用外部网页的代码示例// 获取用户输入的外部网页链接const externalUrl = getUserInput();// 创建一个 iframe 元素来加载外部网页const iframe = document.createElement('iframe');// 设置 iframe 的 src 属性为外部网页链接iframe.src = externalUrl;// 将 iframe 添加到 DOM 中document.body.appendChild(iframe);// 监听 iframe 的加载事件iframe.addEventListener('load', () => {  // 在 iframe 加载完成后进行安全性检查    // 1. 检查是否存在恶意代码  const iframeDocument = iframe.contentDocument;  const scripts = iframeDocument.getElementsByTagName('script');    // 遍历所有的脚本标签,检查是否包含可疑代码  for (let i = 0; i < scripts.length; i++) {    if (hasMaliciousCode(scripts[i].textContent)) {      // 存在恶意代码,采取相应的安全处理措施      handleMaliciousCode();      break;    }  }    // 2. 检查是否存在隐私泄露问题  const sensitiveData = iframeDocument.querySelector('.sensitive-data');    // 如果找到了包含敏感数据的元素,则需要采取相应的隐私保护措施  if (sensitiveData) {    handlePrivacyConcerns(sensitiveData);  }});
马业
2023-08-07
  1. 你先了解一下,什么是跨域,为什么会跨域,跨域会造成哪些影响
  2. 然后了解哪些是跨域,哪些不是跨域
  3. 再了解怎么解决跨域问题
  4. 最后再看自己的问题
慕嘉运
2023-08-07

不会是 iframe 之类的东西吧?

也有可能是个爬虫,爬了一些摘要回来,比如你在聊天窗口发送了一个url

 类似资料:
  • 引入第三方js跨域问题,如何解决? 项目中引入了“天地图”js库, 但是自己的站点是“https”协议,发布站点后,发现请求的库里面重定向到了“http”开头的地址,导致引入该库报错,导致无法使用天地图, 演示: 访问官方demo:http://lbs.tianditu.gov.cn/api/js4.0/examples.html 打开f12,你能看到都是重定向(307)的http,哪怕你把例子中

  • 页签a中:: window.open('http://127.0.0.1:5501/pages/index2.html') document.cookie = 'cookieA=4' 页签b中:: console.log(document.cookie) 页面b中打印结果,从结果看,还是可以拿到页面a设置的cookie

  • 问题内容: 我试图在我的JavaScript代码中调用此URL: http://api.addressify.com.au/address/autoComplete?api_key=99acd24a-1c94-49ad-b5ef-6f90d0f126b1&term=1+George+st+t&state=nsw&max_results=5 这是我的JavaScript代码: 我在控制台中遇到跨域U

  • 简介:这是一款运行在浏览器,主要用javascript语言编写的简易记录笔记程序。俱有自动保存,15天后自动擦除功能。比较简陋,目前只支持IE内核浏览器,暂不支持firefox,opera等浏览器。 注:新人练习作品,基于GPLv3许可证发布,不知道格式用的对不对。去软件主页可以看到说明文档。 内部版本号1.1 最后更新日期:2012年9月20日 附运行截图:

  • 本文向大家介绍如何用Nginx解决前端跨域问题,包括了如何用Nginx解决前端跨域问题的使用技巧和注意事项,需要的朋友参考一下 前言 在开发静态页面时,类似Vue的应用,我们常会调用一些接口,这些接口极可能是跨域,然后浏览器就会报cross-origin问题不给调。 最简单的解决方法,就是把浏览器设为忽略安全问题,设置--disable-web-security。不过这种方式开发PC页面到还好,如

  • 作为一名前端开发者,有时候会遇到一些跨域问题,之前我参考一些教程网址的理解是: 客户端浏览器其实已经将请求发送出去了,服务器端也接收到了,但是服务器返回的数据在回来的时候被浏览器拦截了。 但是今天在和后端同事讨论的时候,他说我之前理解错了。下面是他的解释: 跨域的本质是保护服务器的数据,就好像你不能直接进我家来捣乱,你需要我给你钥匙(需要后端的 Access-Control-Allow-Origi