何为跨域, 如何解决?

  • 同源策略: 访问的域名或端口和请求的域名端口至少有一个不同, 就会拒绝访问
  • 跨域值的实际是, 浏览器不能执行其他网站的脚本. 它是由于浏览器的同源策略造成, 是浏览器对js是假的安全限制
  • 跨域:
    • 就是浏览器访问页面A, 在页面A下, 浏览器访问了不同源的页面B来获取信息, 那么这就是跨域
    • 如果直接开放跨域, 是很危险的, 比如可以直接访问购物网站, 此时携带着你的cookie, 代替你执行购买操作
    • 简单请求(一般的请求), 是要在请求头中加入origin字段, 值为当前的网页url, server来判断是否同源, 如果同源, 则可以返回正常的响应, 如果不行, 则响应失败
    • 非简单请求(put, delete), 以为非简单, 所以操作复杂一些, 会先向server发送options请求, 携带origin字段表名来自哪个页面, 然后看server的回应, 然后再决定是否发送真实请求
  • 解决跨域:
    • 使用nginx

      • 例如, 前端是81端口, 后端是82端口, 81返回的静态资源中有部分需要请求82, 那么此时, 简单请求就会跨域
      • 此时, 用nginx来进行处理, 它是80端口. 我不访问前端, 而是访问nginx, 80端口返回静态资源, 然后,浏览器又请求动态资源, 通过url中的资源名api指定, nginx收到之后, 路由转发, 此时, 这个动态请求的端口和浏览器的当前页面端口都是80, 所以就不存在跨域问题了
      • 在这里插入图片描述
    • 服务端允许跨域

      • 在网关服务中配置corsWebFilter过滤器, 配置允许跨域的 域空间
      • image-20210609112037218

猜你喜欢

转载自blog.csdn.net/qq_34687559/article/details/117735835