浏览器多管闲事之跨域

这篇具有很好参考价值的文章主要介绍了浏览器多管闲事之跨域。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

年少时的梦想就是买一台小霸王游戏机
当时的宣传语就是小霸王其乐无穷~。
大些了,攒够了零花钱,在家长的带领下终于买到了
那一刻我感觉就是最幸福的人
风都是甜的!

哪成想...
刚到家就被家长扣下了
“”禁止未成年人玩游戏机
(问过卖家了,卖家给的结论)...,
合着买是能买,玩是不能玩的!
不让我玩啊,我这个气呀...

浏览器多管闲事之跨域,okhttp

蹩扯了~
生活中的事跟跨域有什么关系,那必须有。
跨域的产生是浏览器的安全机制引起的,只有在使用Ajax时才会发生。简单来说就是你可以通过ajax发送请求,但要看远程服务器脸色,他没授权,浏览器这个老六就给拦截了,不能用这个结果,像极了游戏机让买不让玩。

什么是跨域

跨域(Cross-Origin)指的是在 Web 开发中,一个网页的运行环境(域)与所请求资源的域不一致,即请求的目标资源与当前网页的域名(协议、域名或端口)不同。

Web 浏览器遵循同源策略(Same-Origin Policy),这是一种安全策略,旨在防止潜在的恶意网站窃取用户数据或进行其他安全攻击。同源策略要求网页的运行环境和所请求的资源必须拥有相同的协议、域名和端口,否则浏览器会阻止跨域请求的执行。

举例来说,每个网站都有一个域名或者IP地址(实际上域名就是对IP地址的别名,方便人们记忆)。当我们访问一个网站时,浏览器会将某个页面下载到本地并解析,以展示图形页面。为了支持更多的业务需求,在这个页面中可能会发起一些额外的请求。为了避免页面卡顿,我们使用了Ajax技术偷偷地通过后门请求数据。偷偷走后门是可行的,但是必须遵循规则,不可以随意发起请求。

假设当前页面是www.qfedu.com,在这个页面中发送了一个Ajax请求。浏览器允许请求发送出去,但是请求的地址不是本身的地址,而是www.1000phone.com/api/xxxx这样的地址。此时,浏览器会检查响应,并查看服务端是否允许任何来源发起请求。如果服务端允许,浏览器将放行请求。否则,浏览器会报错,这种错误就是跨域问题。

来吧,看图

 

浏览器多管闲事之跨域,okhttp

绿色都是可以通行的,红色是跨域概念的关键点

如何处理跨域

常用的解决跨域方案有3种,分别是jsonp、cors、proxy

    ● JSONP(JSON with Padding):核心思想是浏览器只限制ajax,不限制图片、多媒体、css、js等资源访问其他网站,恰好利用这个特性,使用一些技巧来解决跨域。

JSONP 是一种利用<script>标签进行跨域请求的技术。通过在页面中动态创建<script>标签,请求远程服务器资源,并在服务器响应中返回一个包裹在函数调用中的 JSON 数据,从而绕过同源策略的限制。JSONP 适用于在受控的环境中,服务器端需要配合返回 JSONP 格式的数据。

有局限性,需要回调函数 +别人服务端配合

    ● CORS(跨域资源共享):核心思想就是让服务器不对任何访问者做限制,在响应头中添加一些语句,浏览器就放行了,就像游戏机卖家跟家长说多大都可以玩,家长也就不会没收了。

    CORS 是一种标准的跨域解决方案,由服务器端进行配置。服务器通过设置响应头来指示允许特定域的请求访问资源,浏览器在接收到响应头后判断是否允许跨域请求。CORS 支持简单请求和预检请求,是一种较为安全和灵活的跨域解决方案。

node.js类型的服务器代码设置如下:

 


// // 允许哪些域名请求我
//设置所有页面都可以访问这个服务
resp.setHeader('Access-Control-Allow-Origin', '*')
//只允许设定的几个网站访问
resp.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:7777')
//允许设定多个网站访问
resp.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:7777,http://127.0.0.1:5500')
// // 允许哪些请求方式
// resp.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS")
// // 允许携带哪些额外的请求头信息
// resp.setHeader("Access-Control-Allow-Headers", "X-Requested-With,X_Requested_With,Content-Type")

有局限性,需要服务端配合,别人服务端安全性降低

● 代理服务器(Proxy):核心思想是指挥家长玩游戏机。。。

代理服务器是一种通过后端服务器转发请求的方法。前端应用将跨域请求发送给同源服务器,然后同源服务器再向目标服务器发送请求,并将响应返回给前端。这样前端应用就绕过了跨域问题,因为请求是同源的。代理服务器是一种有效的跨域解决方案,特别适用于无法修改目标服务器响应头的情况。

这个是比较好的解决方案

总结

我们应该多劝劝浏览器,少管点闲事文章来源地址https://www.toymoban.com/news/detail-636793.html

到了这里,关于浏览器多管闲事之跨域的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 对比两款支持扩展的安卓浏览器:kiwi浏览器和狐猴浏览器

    如果你对支持扩展的手机浏览器感兴趣的话,应该早已对kiwi浏览器耳熟能详。而国内也有不少优秀的支持扩展的手机浏览器非常值得一试,最近我正在使用的狐猴浏览器就是一个不错的产品。 可能你正在寻找一个适合自己的手机浏览器,那这篇文章我就想对比一下kiwi浏览器

    2024年02月06日
    浏览(58)
  • 使用Selenium需要浏览器驱动与浏览器版本统一

    安装浏览器驱动 针对不同的浏览器,需要安装不同的驱动。 这里以安装 Chrome 驱动作为演示。 确定浏览器版本 进入设置界面,然后选择 【关于 Chrome】 查看自己的版本信息。这里我的版本是114,下载对应版本的 Chrome 驱动即可。 下载驱动 打开Chrome驱动。单击对应的版本。(

    2024年02月08日
    浏览(54)
  • Ubuntu卸载firefox浏览器安装google浏览器

            Ubuntu20.4系统,默认用的firefox浏览器,在2022.09.25日之后打开钉钉网页版,突然提示目前该浏览器不支持企业钉钉网页版了,请使用UC浏览器或google浏览器,之前firefox是支持打开钉钉网页版的,现在突然打不开有点不习惯,但是呢,如果两个浏览器同时安装使用的话

    2024年02月05日
    浏览(58)
  • Edge浏览器和Google浏览器占用内存情况

    最近发现适用edge浏览器看视频时,或者打开多个网页,电脑就会变得非常卡顿,打开任务管理器发现内存占用较多,网上也有人说edge浏览器确实占用内存较多。但是给出的解决方案是更新windows系统,这个方法显然不能接受,采用google浏览器即可减小内存占用。 下面进行一组

    2024年02月15日
    浏览(45)
  • 浏览器安全级别怎么设置,设置浏览器安全级别的方法

    浏览器作为重要的上网入口,发挥着重要作用。浏览器的功能不只是用看网页看视频,现在已经发展成为提供全方位服务的综合工具。正是这个原因,浏览器的安全性受到了挑战,要想浏览器安全浏览得到保障,就要设置浏览器的安全级别,那么怎么设置呢?本文将分享浏览

    2024年02月07日
    浏览(67)
  • 118.浏览器支持和修复Safari浏览器的Flexbox漏洞

    在我们之前的文章中,我们介绍了测试的步骤 虽然现在大部分新版本的浏览器都能支持99%的CSS属性,但是不排除的是仍然有一些用户使用老的IE浏览器或者版本较低的浏览器去浏览我们的网页,这样我们的网站可能无法按照我们的预期工作; ● 我们可以使用工具去检测浏览

    2024年02月12日
    浏览(59)
  • 老司机必备的手机浏览器,比UC浏览器还好用

    各位听得最多的段子:老司机们,上车了。没错,不管是在电脑端还是移动端,都需要一款好用的浏览器。那么,老司机们都用什么浏览器,什么样的浏览器才是老司机必备的浏览器呢?来咯,这些手机浏览器比UC浏览器还好用,功能可媲美桌面浏览器,一起来看看吧。 1、谷

    2024年02月12日
    浏览(43)
  • edge浏览器插件打包安装到谷歌浏览器上

    没有安装插件的浏览器不能算的上是一个浏览器,众所周知的原因谷歌无法打开,所有也就无法安装谷歌应用商店的插件,但是Edge浏览器是可以安装访问插件,又因为egde浏览器用的是谷歌的内核,所有大部分的Edge浏览器插件在谷歌上一样是可以使用的。下面就来看一下怎么

    2024年02月13日
    浏览(78)
  • 什么是无头浏览器?如何使用Golang实现无头浏览器截图?

    在Web开发中,有时需要对网页进行截图,以便进行页面预览、测试等操作。 而使用无头浏览器来实现截图功能,可以避免手动操作的繁琐和不稳定性。 这篇文章将介绍: 使用Golang进行无头浏览器的截图,轻松实现页面预览、测试和模拟用户操作。 这篇文章发完,有朋友在朋

    2024年02月05日
    浏览(58)
  • win10取消ie浏览器自动跳转edge浏览器

    建议大家看完整篇文章再作操作 随着windows10 日渐更新,各种不同的操作,规避IE浏览器跳转Edge浏览器的问题 1.(失败)思路 协助Edge浏览器 管理员身份打开 PowerShell 一般edge的默认安装目录是 PowerSell 进行跳转到上述目录 执行卸载命令 然后会提示 打开任务管理器,找到所有

    2024年02月07日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包