返回顶部
首页 > 资讯 > 精选 >前端面试之同源和跨域的示例分析
  • 520
分享到

前端面试之同源和跨域的示例分析

2023-06-08 02:06:32 520人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关前端面试之同源和跨域的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是同源策略同源策略是用来限制从一个源加载的文档或者脚本如何与来自另一个源的资源进行交互,是一种用

这篇文章将为大家详细讲解有关前端面试之同源和跨域的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

什么是同源策略

同源策略是用来限制从一个源加载的文档或者脚本如何与来自另一个源的资源进行交互,是一种用于隔离潜在的恶意文件的关键的安全机制。

何谓同源

如果协议、域名和端口对于两个页面来说是相同的,则这两个页面就是同源的。比如:Http://www.hyuhan.com/index.html 这个网站,协议是http,域名是www.hyuhan.com,端口是80(默认端口),它的同源情况如下:

  • http://www.hyuhan.com/other.html:同源

  • http://hyuhan.com/other.html:不同源(域名不同)

  • https://www.hyuhan.com/other.html:不同源(协议不同)

  • http://www.hyuhan.com:81/other.html:不同源(端口不同)

同源策略是为了保护用户信息的安全,受到同源策略限制的主要有以下几种行为:

  1. Cookie、LocalStorage和IndexDB无法读取

  2. DOM无法操作

  3. ajax请求不能发送

如何进行跨域访问

怎么跨域进行AJAX请求

主要由三种方法可以绕过同源策略的限制,来进行跨域的AJAX请求。

JSONP

JSONP是客户端与服务端跨域通信的常用的方法。利用可以跨域的<script&bt;元素,向服务器请求json数据,服务端收到请求后,将数据放在一个回调函数中传回来。实现如下:

window.onload = function() {    var script = document.createElement('script');    script.src = "http://example.com/callback=test";    document.appendChild(script);}function test(res) {    console.log(res);}

src的callback参数是用来设置后端需要调用的回调函数的名字的,服务器返回的数据如下:

test({    "name": "小明",    "age": 24    })

这样,前端就能跨域读取后端的数据了。但是jsopn只能发生get请求,不能发送post请求。

WebSocket

websocket是一种基于tcp的新的网络协议,它不实行同源策略,只要服务器支持,就可以进行跨域访问。而且WEBSocket并不限于以Ajax方式通信,因为Ajax技术需要客户端发起请求,而WebSocket服务器和客户端可以彼此相互推送信息。

CORS

CORS是Access-Control-Allow-Origin(跨域资源共享)的缩写,它是一个W3C的标准。CORS需要浏览器和服务器同时支持,目前基本所有的浏览器都支持该功能。服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。

document.domain

Cookie是服务器写入浏览器的信息,安全起见,只有同源的网页才能共享。但是,如果两个网页的一级域名相同,但是耳机域名不同的话,可以通过设置document.domain来共享Cookie。

比如,一个网页域名是http://w1.example.com/a.html ,另一个网页域名是http://w2.example.com/b.html ,只要给们设置相同的document.domain,这两个网页就可以共享Cookie。

postMessage API

postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文档、多窗口、跨域消息传递。用postMessage()函数传递消息,目标页面监听window的message事件接收消息。利用postMessage,我们可以跨域读取LocalStorage和IndexDB还有DOM数据。

window.name

浏览器窗口有window.name的属性,该属性规定无论是否同源,只要在一个窗口里,前一个网页设置了这个属性,后一个网页就可以读取它。即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的。显然,这是可以实现跨域访问的。

关于“前端面试之同源和跨域的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 前端面试之同源和跨域的示例分析

本文链接: https://lsjlt.com/news/251003.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 前端面试之同源和跨域的示例分析
    这篇文章将为大家详细讲解有关前端面试之同源和跨域的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是同源策略同源策略是用来限制从一个源加载的文档或者脚本如何与来自另一个源的资源进行交互,是一种用...
    99+
    2023-06-08
  • WEB前端跨域的示例分析
    这篇文章主要为大家展示了“WEB前端跨域的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“WEB前端跨域的示例分析”这篇文章吧。 ...
    99+
    2024-04-02
  • 前端面试题之url、href、src的示例分析
    这篇文章主要介绍前端面试题之url、href、src的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、URL的概念统一资源定位符(或称统一资源定位器/定位地址、URL地址等...
    99+
    2024-04-02
  • SpringCloud前后端分离后引起跨域访问的示例分析
    这篇文章主要为大家展示了“SpringCloud前后端分离后引起跨域访问的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringCloud前后端分离...
    99+
    2024-04-02
  • 前后端分离之VueJS前端的示例分析
    这篇文章给大家分享的是有关前后端分离之VueJS前端的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言前端用什么框架都可以,这里选择小巧的vuejs。要实现的功能很简单...
    99+
    2024-04-02
  • 浏览器中同源策略以及跨域的示例分析
    这篇文章主要介绍了浏览器中同源策略以及跨域的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是浏览器的同源策略,以及跨域?同源策略...
    99+
    2024-04-02
  • 前端面试中字节的笔试题和算法题示例分析
    这篇文章将为大家详细讲解有关字节的笔试题和算法题示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。题目给定一个包含 m x n 个元素的矩阵(m 行, ...
    99+
    2024-04-02
  • web前端面试题实例分析
    今天小编给大家分享一下web前端面试题实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。面试官:页面导入样式时,使用 l...
    99+
    2023-07-05
  • 前端理论之rscss和rsjs的示例分析
    这篇文章主要为大家展示了“前端理论之rscss和rsjs的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“前端理论之rscss和rsjs的示例分析”这篇文...
    99+
    2024-04-02
  • ajax和jsonp跨域原理的示例分析
    这篇文章主要为大家展示了“ajax和jsonp跨域原理的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ajax和jsonp跨域原理的示例分析”这篇文章吧...
    99+
    2024-04-02
  • JS前端同源策略和跨域及防抖节流详解
    目录引言jQuery中JSONP的实现防抖【重要】缓存搜索的列表1 定义全局缓存对象2:将搜索结果存储到缓存对象中3优先从缓存中获取搜索列表节流【重点】防抖和节流的区别引言 协议,域...
    99+
    2024-04-02
  • web前端常见面试题实例分析
    这篇文章主要介绍“web前端常见面试题实例分析”,在日常操作中,相信很多人在web前端常见面试题实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”web前端常见面试题实例...
    99+
    2024-04-02
  • web前端面试题案例代码分析
    这篇文章主要讲解了“web前端面试题案例代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web前端面试题案例代码分析”吧!面试官:css 如何实现左侧固定 300px,右侧自适应的布局...
    99+
    2023-07-05
  • 前端react面试题实例代码分析
    这篇“前端react面试题实例代码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“前端react面试题实例代码分析”文章吧...
    99+
    2023-07-05
  • 高频web前端面试题实例分析
    本篇内容主要讲解“高频web前端面试题实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“高频web前端面试题实例分析”吧!面试官:请你简述 var、let、const 三者之间的区别?我:呃...
    99+
    2023-07-05
  • web前端面试题实例题目分析
    今天小编给大家分享一下web前端面试题实例题目分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。面试官:请你谈一下自适应(适...
    99+
    2023-07-05
  • web前端面试题实例代码分析
    这篇文章主要讲解了“web前端面试题实例代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web前端面试题实例代码分析”吧!面试官:给定一个元素,如何实现水平垂直居中?我:呃~,针对这个...
    99+
    2023-07-05
  • Java面试题之JVM的示例分析
    这篇文章给大家分享的是有关Java面试题之JVM的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。面试题1:你遇到过哪些OOM情况,什么原因造成的?怎么解决的?该问题主要针对你遇到的实际问题出发,可以根据你...
    99+
    2023-06-20
  • Puppeteer前端自动化测试的示例分析
    这篇文章主要为大家展示了“Puppeteer前端自动化测试的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Puppeteer前端自动化测试的示例分析”这...
    99+
    2024-04-02
  • Vue3.x+axios跨域的示例分析
    这篇文章将为大家详细讲解有关Vue3.x+axios跨域的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue.config.js中devServer.proxy...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作