美文网首页
前端开发/生产环境-解决跨域

前端开发/生产环境-解决跨域

作者: 瓢鳍小虾虎 | 来源:发表于2021-09-28 22:38 被阅读0次

比较老的方案是jsonp,本质是利用script标签的跨域请求不会被浏览器拦截,需要后端配合支持cors请求,缺陷就是只能支持get请求。类似的还有img标签。

jsonp的原理是浏览器加载script标签的时候只会当做文件加载,是可以跨域请求资源的,利用这点我们可以给src设置指定的跨域地址发get请求;然后script标签加载后会执行内部的代码,这让服务端可以返回一个前端声明过的自执行的函数,并带上参数,这样就完成了跨域请求。
jsonp的核心流程就是:

  1. 创建一个script标签,src设置指定的跨域请求地址,query带参数和回调函数名,并声明好这个回调函数。
  2. 服务端返回脚本,内容是自执行的回调函数。

现在大多用以下方案:

开发环境一般配置server代理就行,即配置devServer的proxy

devServer: {
  proxy: {
    '/api': {
      target: 'http://localhost:5000', // 代理到localhost:5000
      pathRewrite: { // 转发的时候删除与请求目标地址无关的部分
        '^/api': ''
      },
      ws: true, // 用于支持websocket,vue脚手架默认是true可以不用配置
      changeOrigin: true // 用于修改请求头中的host字段,改成目标地址的host
      // changeOrigin vue脚手架默认也是true可以不用配置
    } 
  }
}

生产环境一般配置nginx反向代理

上面两种都是利用代理服务绕过了浏览器的xhr请求(因此不会报跨域问题),直接与后台发http请求

生产环境有些资源后端会直接配置允许cors请求(Access-Control-Allow-Origin),比如一些公共的库。

以上问题都是需要跨域的场景,还有一类是不应该跨域产生的问题:

csrf攻击:如果你的项目使用了cookie作为登陆凭证,就需要考虑对cookie做安全控制,恶意脚本会通过xss漏洞生成一个链接跳转到另一个网址,并通过document获取cookie信息伪造登陆用户,并向服务端发跨域请求窃取信息。解决这个问题需要服务端给cookie配置”httpOlny”来阻止浏览器操作cookie,还需要配置SameSite=Strict 阻止非同源cookie发送。这个功能依赖浏览器厂商支持,还是有风险。因此目前主流都登陆验证都不使用cookie,而是Oauth2.0认证CSRF攻击与防范
(https://segmentfault.com/a/1190000011145364)

相关文章

  • 开发环境跨域和生产环境跨域

    开发环境跨域 前后端分离,IP地址不同,请求数据必然导致跨域问题;解决方案:proxy设置 生产环境跨域 解决方案...

  • 前端开发/生产环境-解决跨域

    比较老的方案是jsonp,本质是利用script标签的跨域请求不会被浏览器拦截,需要后端配合支持cors请求,缺陷...

  • js解决跨域问题

    与后台开发联调接口时经常碰到跨域的问题,有两个解决的办法:让后端开发去掉跨域参数;前端自己解决。 前端解决接口联调...

  • 利用Vue-cli中的proxyTable解决开发环境的跨域问题

    对于前端开发人员来讲,当你在开发环境中与后台开发人员进行数据联调时,总会遇到烦人的跨域问题! 解决跨域的方法有很多...

  • vue请求跨域问题解决

    production:产品 生产环境 development:开发 开发环境 1、开发环境设置跨域 使用工具:vu...

  • koa设置跨域访问以及跨域验证cookie

    环境 后端框架: koa2 前端请求框架: axios 解决跨域访问 koa加上如下代码: 解决跨域验证cooki...

  • 跨域解决方案(史上最易懂)

    跨域总结 1.跨域思路 跨域解决方案一般分为两种:前端解决,后端解决 1.1 前端解决方案 通过前端解决的思想就是...

  • 60.webpack中的proxyTable

    proxyTable是解决开发环境中的跨域问题,正式环境的跨域需要使用nginx反向代理或者是后端解决 '/api...

  • 基于nodejs的跨域代理

    对于前端开发的童鞋,如果涉及到和后端协同开发,有可能会碰到跨域的问题,对于解决跨域的问题,目前有几种解决方式,例如...

  • 浏览器跨域的那些事

    整理中 目标: 了解跨域 解决跨域 服务器配置跨域(java, nginx) 前端调试时配置解决跨域 一、什么是跨...

网友评论

      本文标题:前端开发/生产环境-解决跨域

      本文链接:https://www.haomeiwen.com/subject/otcdnltx.html