什么是跨域报错,产生后怎么解决

416 阅读2分钟

什么是跨域错误:
是指不同源的ajax请求 .
      所以我们可以知道要产生跨域错误必须满足两个条件,第一是不同源,第二个强调了必须是ajax请求.
       跨域在开发中非常常见,例如用双击任意点开一个 .html的文件,都算是跨域了.
入下图情况,就是非常经典的跨域错误.localhost为本机,而浏览器中是此电脑的IP地址,按照常理来说都是指同一台电脑,这两种书写方式应当是一样的,但服务器中写入的是localhost,在浏览器网址写入192.168.87.22,信息交互时存在地址匹配,当浏览器发现两者不相等时就会报跨域错误.
      如图 1.jpg

      浏览器已经提示很明显提示,在'get'接口中读取到的为http://localhost:3000/getapi?a=1&b=2 这个地址与浏览器中输入查询的地址不一致所以报错,但是此时应该注意的是服务器是正常运行的,并且接收到了请求,只是数据从服务器再次传到浏览器的时候被浏览器阻止.
      此时第一个解决方法也是最简单的直接将浏览器中的地址更改和服务器一致.       第二个方法是,下一个插件allow-control-allow-origin使浏览器绕过同源策略.       第三个方法是,下一个cors包在请求的路由中添加一个Access-Control-Allow-Origin响应头.如下

    const = require('cors')
    app.use(cors())
    res.setHeader('Access-Control-Allow-Origin', '*')  // * 表示允许任何域名来访问

      这就是解决跨域报错的几个方法,开发中推荐使用第三个.