浏览器跨域问题

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

什么是跨域

违背同源策略就是跨域。
同源策略: 网页的url 和 该网页请求的url 的协议、域名、端口必须保持一致。
协议、域名、端口必须保持一致.
同源策略存在的原因: 保护用户隐私和防范网络攻击(https://editor.csdn.net/md?not_checkout=1&spm=1011.2415.3001.6217&articleId=132763789)
即如果网页请求的url 和 网页的url 的协议、域名、端口任意一项不同就是跨域。

跨域的原理

跨域是请求发出去了,服务器接收并返回了结果,只是浏览器没有接收响应结果。
浏览器跨域问题,壹囝臜+,跨域

跨域出现的场景

  • html中的跨域:图像加载(img的src,background的url)、脚本引用(script的src)。但是通过这些标签访问的资源虽然即使是跨域资源,但浏览器仍然会允许资源的加载和显示。—— jsonp的原理
  • windows跨域:window.open(”跳转的地址“),当跳转的地址和项目的地址不满足同源策略的时候可能会出现跨域问题。
  • js中的跨域:XML请求(XMLHttpRequest),XMLHttpRequest是一种常见的通过 JavaScript 发起跨域请求的方式。浏览器会基于同源策略对XMLHttpRequest发起的跨域请求进行限制。 —— 最常见的形式

跨域的解决

分上面三种情况分别解决

  1. html中的跨域:html中的跨域浏览器并不会限制,所以不用处理
  2. windows跨域:
  • windows跳转出现的跨域问题可以使用rel="noopener noreferrer" 属性进行解决
window.open("https://www.example.com", "_blank", "rel=noopener,noreferrer");

这个属性指示浏览器不要在打开的新窗口中传递引用到原始页面,从而限制了对原始页面的访问,从而不会出现跨域问题。

  • 使用服务器中间页:创建一个位于自己域名下的服务器中间页,该中间页作为跳转页,用于将用户重定向到目标页面。
  • CORS方式(下面说)
  1. js中的跨域:一般说的就是XML跨域(ajax跨域)
  • jsonp方式解决——利用script标签的跨域不限制性
    前端需要定义函数,而且后端需要调用该函数
    jsonp只能解决GET请求跨域,所以jsonp请求很少用
  • CORS方式解决
    CORS通过设置响应头来实现跨域请求,由后端人员添加响应头
response.setHeader('Access-Control-Allow-Origin','*');

浏览器一看到后端携带的响应头就不拦截数据了,就可以实现跨域请求。
造成的问题是任何人都可以向该后端要数据,是不安全的。
(可以通过使用浏览器的开发者工具来查看HTTP响应头部中是否包含Access-Control-Allow-Origin字段来判断该资源是否设置了Access-Control-Allow-Origin共跨域使用)

jsonp和CORS方法的使用详见:https://blog.csdn.net/mantou_riji/article/details/124767753?ydreferer=aHR0cHM6Ly9tcC5jc2RuLm5ldC9tcF9ibG9nL21hbmFnZS9hcnRpY2xlP3NwbT0xMDAxLjIxMDEuMzAwMS41NDQ4文章来源地址https://www.toymoban.com/news/detail-703050.html

  • 最后一种解决方法就是代理服务器。
    代理服务器的原理:
    设置一个代理服务器,它的协议名、主机名、端口号和前端页面的一模一样,这样前端访问该代理服务器就没有跨域问题了。
    当该代理服务器收到前端的请求,再向其他服务器发送该请求,获取数据,之后将数据返回给前端。
    (服务器之间不是通过ajax请求发送信息自然也没有跨域这个问题了)
    浏览器跨域问题,壹囝臜+,跨域
    代理服务器的实现:
    • nginx实现代理服务器: niginx配置代理转发的文件,当用户访问这个网址的时候就将代理进行转发
    • node实现代理服务器:。。。
    • 如果是vue项目直接配置vue.config.js
      配置代理服务器需要对vue.config.js做如下配置:
module.exports = {
  devServer: {
    // 这里配置的是向哪台服务器发送请求
    // (代理服务器的地址不用管他会自动配置)
    proxy: '协议名://主机名:端口号'
  }
}

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

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

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

相关文章

  • 谷歌浏览器请求 strict-origin-when-cross-origin 跨域问题,解决方法之一

    谷歌浏览器请求 strict-origin-when-cross-origin 跨域问题,解决方法之一

    项目打包部署在内网后,index.html 里通过script标签引入的其他链接资源不能正常请求,报的是跨域错误 首先观察了资源请求正常和请求报错的两台电脑,发现两者请求的 Referrer Policy(引荐来源网址政策) 不同。 其次发现两个电脑的谷歌浏览器版本不同,可以正常请求的是用

    2024年02月12日
    浏览(49)
  • nginx处理cros跨域遇到的各种问题及解决方案,以及https配置和浏览器https不安全问题处理

    nginx处理cros跨域遇到的各种问题及解决方案,以及https配置和浏览器https不安全问题处理

    提示:本人在生产部署服务时遇到一系列跨域问题和https配置问题,特此做以下记录: 跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了

    2024年02月02日
    浏览(45)
  • 浏览器跨域

    浏览器跨域

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

    2024年02月10日
    浏览(10)
  • 浏览器同源策略导致跨域问题 No ‘Access-Control-Allow-Origin‘ header 原因及解决方式--(后端、nginx、前端)

    浏览器同源策略导致跨域问题 No ‘Access-Control-Allow-Origin‘ header 原因及解决方式--(后端、nginx、前端)

    目录 现象 原因 浏览器同源策略 导致结果: 解决方案 跨源资源共享(CORS) 各个端解决方法: 后端: 方式1:重载WebMvcConfigurer方法 方式2:配置监听CorsFilter 方式3:相关类上加注解 @CrossOrigin 注意事项: Nginx解决: 情况1: 前端解决: 本人身份:后端 今天部署线上环境前端

    2024年01月23日
    浏览(13)
  • 浏览器:跨域及解决方法

    浏览器:跨域及解决方法

    一、为什么会出现跨域问题 出于浏览器的 同源策略 限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能不能使用。可以说Web是构建在同源策略基础之上的, 浏览器只是针对同源策略的一种实现 。

    2024年02月03日
    浏览(10)
  • 浏览器跨域的配置

    浏览器跨域的配置

    目录 1、前言 2、同源策略 3、跨源数据存储访问 4、浏览器跨域设置 4.1 版本号(49.x.x.x.x)之前的跨域设置 4.2 版本号(49.x.x.x.x)之后的跨域设置 5、批处理跨域设置 5.1 windows 操作系统。 5.2 Mac 操作系统 在我们进行前端开发的时候,我们请求的后端的接口可能是在不同的域名

    2024年02月07日
    浏览(8)
  • Flutter如何支持浏览器跨域

    当使用 flutter 构建 web 项目,直接运行在 chrome 浏览器发出网络请求会发生跨域错误  strict-origin-when-cross-origin(CROS) ,比如在 dart 代码直接用  dio.get(\\\"https://www.yunfuit.com\\\") ,dio 会报错,在 chrome 的 DevTools 中会发现 CROS 错误。 解决办法: 在 flutterbincache 删除 flutter_tools.stamp

    2024年02月17日
    浏览(11)
  • Chrome浏览器的跨域设置

    Chrome浏览器的跨域设置

    做前后端分离的开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,而且chrome浏览器支持可跨域的设置,但是新版本的chrome浏览器提高了跨域设置的门槛,原来的方法不再适用了。其实网上也有很多大神总结的chrome跨域设置教程,都是差不多。 下载好谷歌浏

    2024年02月02日
    浏览(146)
  • 浏览器多管闲事之跨域

    浏览器多管闲事之跨域

    年少时的梦想就是买一台小霸王游戏机 当时的宣传语就是小霸王其乐无穷~。 大些了,攒够了零花钱,在家长的带领下终于买到了 那一刻我感觉就是最幸福的人 风都是甜的! 哪成想... 刚到家就被家长扣下了 “”禁止未成年人玩游戏机 (问过卖家了,卖家给的结论)..., 合着

    2024年02月13日
    浏览(7)
  • chrome浏览器跨域设置(版本号108之后的跨域设置)

    chrome浏览器跨域设置(版本号108之后的跨域设置)

    1、首先在chrome浏览器安装目录下复制chrome.exe,生成一个新的命名为chrome-cross.exe 注意:为什么要在目录下复制一个新的?是因为如果名字相同,可能会导致设置好的跨域浏览器打开后跟原来的chrome.exe是同一个浏览器,设置的跨域浏览器就不是生效了。 2、点击 chrome-cross.exe

    2024年02月15日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包