什么是跨域问题?跨域解决问题

什么是跨域问题?跨域解决问题一 为什么会出现跨域问题 出于浏览器的同源策略限制 同源策略是一种约定 它是浏览器最核心也是最基本的安全功能 如果缺少了同源策略 则浏览器的正常的功能可能会受到影响 跨域收是 Web 是构建在同源策略基础上的 浏览器只是针对同源策略的一种实现 同源策略会阻止一个域的 JavaScript 脚本和另一个域的内容进行交互 所谓同源 即指同一个域 就是两个页面具备同样的协议 protocol 主机 host 和端口号 port 跨域报错的原因请求是跨域的 并不一定会报错 普通的图片请求 css 文件请求是不

一.为什么会出现跨域问题?

出于浏览器的同源策略限制.同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常的功能可能会受到影响,跨域收是Web是构建在同源策略基础上的,浏览器只是针对同源策略的一种实现,同源策略会阻止一个域的JavaScript脚本和另一个域的内容进行交互,所谓同源(即指同一个域)就是两个页面具备同样的协议(protocol),主机(host)和端口号(port)

跨域报错的原因

请求是跨域的,并不一定会报错。普通的图片请求,css文件请求是不会报错的

跨域请求出现错误的条件: 浏览器同源策略 && 请求是ajax类型

二.什么是跨域?

当一个请求url的协议,域名,端口三者之间任意一个与当前的url不同都即为跨域

三、非同源限制

【1】无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB

【2】无法接触非同源网页的 DOM

【3】无法向非同源地址发送 AJAX 请求

四、跨域解决方法

1.cors的使用

由于XHR对象被W3C标准化之后,提出了很多XHR Level2(2008-2012年)的新构想,其中新增了很多新方法(onload、response….)和CORS跨域资源共享。
浏览器升级后开始支持CORS方案,从IE10开始支持。
CORS方案,就是通过服务器设置响应头来实现跨域
什么是跨域问题?跨域解决问题
CORS才是解决跨域的真正解决方案。
  • 前端需要做什么?
    • 无需做任何事情,正常发送Ajax请求即可。
  • 后端需要做什么?
    • 需要加 响应头
      。或者使用第三方模块
      cors

    2什么是跨域问题?跨域解决问题

2.jsonp的使用 

是程序员被迫想出来的解决跨域的方案。

JSONP方案和Ajax没有任何关系

JSONP方案只支持GET请求(缺点)

JSONP没有浏览器兼容问题,任何浏览器都支持。(优点)

  • 原理
    • 客户端利用 script 标签的 src 属性,去请求一个接口,因为src属性不受跨域影响。
    • 服务端响应一个字符串
    • 客户端接收到字符串,然后把它当做JS代码运行

为什么不使用image等src?

image会将后端发送来的数据转换为图片的形式,script的src会转换为js代码

 什么是跨域问题?跨域解决问题

3.代理转发 

什么是跨域问题?跨域解决问题

   1).代理服务和前端服务之间由于协议域名端口三者统一不存在跨域的问题,可以直接发送请求

   2).代理服务和后端服务之间并不通过浏览器没有同源策略的限制,可以直接发送请求

步骤:

  1)在vue.config.js中配置devServer

  2)确保基地址指向本地服务

 devServer: { }, proxy: { // 当前前端的项目服务器devServer,收到一个请求,并且请求地址以/api打头,就出触发代理机制 // http://localhost:9588/api/login -> http://localhost:3000/api/login '/api': { target: 'http://localhost:3000' // 我们要代理的真实接口地址 } } },

然后开发环境中的基地址,使用的就是/api这样就可以自动补全前面的域名,就会为同一个域名了; 这样就解决啦!api接口中如果有/api记得要删除哦!

什么是跨域问题?跨域解决问题 什么是跨域问题?跨域解决问题

 

最后,如能帮到您,请一键三连,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233899.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 自整定pid的控制算法_模糊pid控制算法讲解

    自整定pid的控制算法_模糊pid控制算法讲解一、PID控制算法PID是比例、积分、微分的简称,PID控制的难点不是编程,而是控制器的参数整定。参数整定的关键是正确地理解各参数的物理意义,PID控制的原理可以用人对炉温的手动控制来理解。阅读本

    2022年8月2日
    3
  • 浮雕建模软件_自建房设计软件

    浮雕建模软件_自建房设计软件vectricaspire10是一款非常专业的3d浮雕模型设计软件,为CNC铣床上创建和切割零件提供了强大直观的解决方案,凭借其独特的3D组件建模、完善的2D设计、编辑工具集让你可以轻松使用现有2D数据或导入的3D模型,甚至能够从头开始创建自己的2D和3D零件。而且可以将几何体捕捉到不作为几何体存在的直线,延伸和交叉点,从而减少对大多数构造矢量的需求,还具有一整套完善的绘图工具,允许你通过在创建几何体时允许键入值来更轻松地为形状创建和编辑过程添加更多精度,让你能够更准确地切割这些形状。与此同时,全新的v

    2022年9月5日
    5
  • 8个免费和最佳开源视频流服务器软件

    视频流服务器是系统软件,无论用户使用什么操作系统,都可以使用户流视频。某些视频流服务器基于Linux与操作系统无关,可以安装在任何计算机上。很少有人针对特定的平台,例如Windows,Linux或Mac。什么是视频流服务器?远程提供和管理视频媒体内容的服务器软件称为“视频流服务器”。并非所有的视频播放器都可以与视频流服务器一起使用,而是需要一个完美的视频播放器来与远程服务器一起使用来缓冲和…

    2022年4月5日
    96
  • oracle数据库建表语句大全_sql server建表语句

    oracle数据库建表语句大全_sql server建表语句Oracle数据库建表语句#1.建表语句createtableCUST_INFO(CUST_IDVARCHAR(36)notnull,CUST_TYPEVARCHAR(50),CUST_NAMEVARCHAR(200),ID_NO…

    2022年9月8日
    0
  • ServletContextListener作用[通俗易懂]

    ServletContextListener作用[通俗易懂]ServletContext被Servlet程序用来与Web容器通信。例如写日志,转发请求。每一个Web应用程序含有一个Context,被Web应用内的各个程序共享。因为Context可以用来保存资源并且共享,所以我所知道的ServletContext的最大应用是Web缓存—-把不经常更改的内容读入内存,所以服务器响应请求的时候就不需要进行慢速的磁盘I/O了。Serv…

    2022年6月11日
    26
  • WPF WrapPanel:自动折行面板「建议收藏」

    WPF WrapPanel:自动折行面板「建议收藏」WrapPanel:自动折行面板。内部元素在排满一行后能够自动折行,类似于Html中的流式布局WrapPanel布局面板将各个控件从左至右按照行或列的顺序罗列,当长度或高度不够时就会自动调整进行换行,后续排序按照从上至下或从右至左的顺序进行。常用的方法:1.Orientation——根据内容自动换行。当Orientation属性的值设置为Horizontal:元素是从左向右排列…

    2022年7月22日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号