V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
realfex
V2EX  ›  前端开发

大佬们,帮忙解答下关于前端跨域问题的疑惑

  •  
  •   realfex · 2019-07-25 16:43:16 +08:00 · 2422 次点击
    这是一个创建于 1954 天前的主题,其中的信息可能已经有所发展或是发生改变。

    浏览器存在跨域问题的根源在于浏览器的同源策略

    同源策略对于 ajax 这块,应该本意是不希望浏览器端 js 在未经允许的情况下随意调用非同源的接口发送和获取数据

    某些解决方案例如 jsonp、cors 其实都是需要服务端配合才能实现,相当于是需要服务端的许可,所以很合理,并不违反同源策略的初衷

    但是对于代理这种方式,前端现在做项目离不开各种 node 环境,而在 node 环境里,不管是用各种 proxy 插件还是自己本地启个 server 来请求别人接口,再把数据转发给前端来绕过跨域,都是极其方便的,且不需要经过接口端的任何允许

    那么同源策略关于 ajax 这块的限制,是不是形同虚设?还有什么意义吗?

    可能我了解的不够,望大佬解惑

    4 条回复    2019-07-25 19:14:19 +08:00
    meepo3927
        1
    meepo3927  
       2019-07-25 18:47:46 +08:00
    个人认为,不是形同虚设。

    意义在于,它让浏览器避免成为跨域攻击的工具,尽量确保环境安全。

    proxy 跨域攻击是有人故意为之,

    浏览器如果能跨域攻击,那么广大的网民可能也成为"攻击者"。
    momocraft
        2
    momocraft  
       2019-07-25 19:04:41 +08:00
    你自己架服务器当然随便允许,不管用什么语言
    这不叫形同虚设
    maichael
        3
    maichael  
       2019-07-25 19:11:45 +08:00
    “但是对于代理这种方式,前端现在做项目离不开各种 node 环境,而在 node 环境里,不管是用各种 proxy 插件还是自己本地启个 server 来请求别人接口,再把数据转发给前端来绕过跨域,都是极其方便的,且不需要经过接口端的任何允许” 这是你自己预料中的,想要的跨域,自然是允许的。

    但是浏览器防的是你不想要的跨域“攻击”。
    zsdroid
        4
    zsdroid  
       2019-07-25 19:14:19 +08:00
    你不知道的才叫攻击,你知道的叫正常访问
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2904 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 02:39 · PVG 10:39 · LAX 18:39 · JFK 21:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.