V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
devhxy
V2EX  ›  程序员

8 年+应该懂跨域问题吗?

  •  
  •   devhxy · 110 天前 · 13759 次点击
    这是一个创建于 110 天前的主题,其中的信息可能已经有所发展或是发生改变。
    作为一个面试官,我面试尽量规避八股文,可现实接触到很多后端开发说我只负责 api 开发,项目中没有开发过 web ,但是简历里面又说熟悉 Vue,React 等,

    虽说目前开发模式都是前后端分离,这类问题确实不需要他这个岗位去解决,有运维有架构去解决这些系统层面的问题,我还是象征性的问了下什么是跨域?答案完全不在点上!

    这能算卷吗?
    135 条回复    2025-05-17 18:41:50 +08:00
    1  2  
    lscho
        101
    lscho  
       110 天前   ❤️ 1
    别的岗位几年不懂跨域无所谓

    但是做 web 开发 1 ~ 2 年还不懂跨域妥妥废材。

    前端不懂意味着对浏览器的各种策略、和对 js 标准的实现毫无研究
    后端不懂意味着对 http 协议毫无研究
    fun201108
        102
    fun201108  
       110 天前
    @lqu3j #80 我用 Firefox 调试
    abolast
        103
    abolast  
       110 天前
    跨域根本就不是问题,跨域是浏览器的安全措施标准。
    要不让 CORS 告警出现,成功执行非同源脚本,可以根据浏览器报错信息逐步添加对应的头部,这个 http 端的 nginx 可以响应自定义头部,不过标准版 nginx 毕竟不是高级语言,不灵活。建议是后端根据公司服务判断如何响应头部,要有限制的响应,不能无脑给一个通配符
    abolast
        104
    abolast  
       110 天前
    @lscho 「后端不懂意味着对 http 协议毫无研究」 说得太好了。对于 web 前端来说,必须能提前预见到 CORS 的出现,并提前和后端/运维对接好。
    yankebupt
        105
    yankebupt  
       110 天前
    三年不知道跨域不应该,但现实中真有
    8年不知道跨域纯属胡扯……在家上了8年网也该知道跨域了……
    xjzshttps
        106
    xjzshttps  
       110 天前
    即使只负责 api 开发,至少也要听说过跨域吧?
    如果还熟悉 Vue 、React ,那么至少要知道怎么解决跨域问题吧?

    这不是几年开发的问题,而是成熟的开发的基础要求。
    当然细节可能记不清楚,这个倒是正常,可能很久没碰倒了,公司现存项目默认就带配置解决了问题。
    yeqizhang
        107
    yeqizhang  
       110 天前 via Android
    @lscho 这和协议没啥关系吧,没遇到跨域的问题的话不知道这东西也正常,允许跨域的头也是浏览器这边的规范和定义的头,协议的标准里写了这个?
    zhleonix
        108
    zhleonix  
       110 天前
    8 年的螺丝钉真的不敢招。
    y1y1
        109
    y1y1  
       110 天前
    八年?八天都该懂的东西
    abolast
        110
    abolast  
       110 天前
    @yeqizhang 作为一个运维,mozilla 的文档我基本看了个遍来增加自己的知识储备,其中 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Guides/CORS 就讲到跨域,是包含在 http 这部分。所以,这是后端的技能素养之一
    isnullstring
        111
    isnullstring  
       110 天前
    @hwdq0012 #25 +1 ,虽然我也不知道是怎么解决的,但知道为啥会这样
    yeqizhang
        112
    yeqizhang  
       110 天前 via Android
    @abolast 应该说是 web 工程师需要掌握的,mozilla 主要针对 web 这边用到的 http 相关内容都有文档,我找了下,http 协议的 RFC 文档应该不写这个的
    aarontian
        113
    aarontian  
       110 天前   ❤️ 2
    三年经验的时候,我弄懂过跨域,因为当时真写了点(简单的)网页,也接触过网关项目。

    八年经验的时候,我已经忘得差不多了,至少你冷不丁问我这个问题,我不太可能答完整。比如现在我还是稍微回忆了会才记起来这是浏览器的安全限制/浏览器针对跨域请求会先发个 options/后端可以通过修改 header 绕过限制,再往细就很难答了(面试第一时间可能连这三点都答不全)。

    我是后端,我也不认为我对技术没热情,后端遇到这个问题本就极少极少,尤其大厂后端大都是在 API Gateway 后面撸微服务交互代码的,连 cors middleware 都遇不到。

    我的看法是细节方面遗忘一些一点不影响系统建模,架构设计能力,也不影响解决问题的能力。接触或者说掌握过的技术越多反而很难对一些基础知识记得清楚,但你问题抛给我我一定能解决。。。有些拿前端标准要求后端的人多少有点吹毛求疵了
    Hyperion
        114
    Hyperion  
       110 天前 via Android
    …我刚毕业时候,不管是前端还是后端,就算是最简单的八股也包含 HTTP 协议相关的东西,跨域头、KeepAlive 更是必备。那是不是现在问 TCP 三次握手都已经是难为人了?

    别说什么搜搜就好,很多人 Cookies 基础都已经不懂了,Chrome 调整默认 SameSite 属性那时候还挺多人解决不好,搜都不知道怎么搜。

    怎么到 2025 年,八股的难度都要开始降低了?
    hafuhafu
        115
    hafuhafu  
       110 天前
    不算卷。
    我也见过很多简历,简历上写的各种熟练各种项目,面试时问他们最最基础的都不会,根本就是在瞎编瞎写。
    像有的写什么熟练掌握 js 和 vue ,问 Promise 是啥,Vue 的生命周期,组件传值这种最最最最基本的都说不出个一二。还有些后端工作几年事务之类的也不清楚。跨域这东西,即使说不清楚细节,能说个大概也行。很多人连大概都说不清楚。
    所以现在大多数简历一眼看着就不太靠谱,我都直接默认当假的或者夸大的,挑里面感觉有点价值面试的再慢慢验真,反正各种一言难尽。
    mercury233
        116
    mercury233  
       110 天前
    除非一直写古法 php 甚至 asp ,从不调用 api ,否则做 web 的没有理由不接触跨域吧
    duck2u
        117
    duck2u  
       110 天前
    @imokkkk 8 年级忘记了 2 年级学的知识
    yukunyi
        118
    yukunyi  
       109 天前
    WEB 开发不懂这个那就是混子。不管几年。
    SchwarzeR
        119
    SchwarzeR  
       109 天前
    知道大概怎么回事,然后具体去哪里查文档我觉得就算合格了,跨域那个东西乱七八糟的细节老是记不住

    但是既不知道大致怎么回事,也不知道相关文档在哪的就比较难评了
    www5070504
        120
    www5070504  
       109 天前
    不懂 web+1 但是跨域这个东西一定会遇到 遇到了花两个小时粗浅的研究下到底是啥原因应该还是本职工作内的吧
    Yuanlaoer
        121
    Yuanlaoer  
       109 天前
    “我没做过 xxx ,我不懂,这完全没问题啊。”
    “什么,你竟然没听说过 xxx ,你是傻 x 吧?”
    pvnk1u
        122
    pvnk1u  
       109 天前
    @aarontian 我觉得这样才是常态,工作里会涉及的东西海了去了,接触么肯定接触过,但是你要让我在面试的时候都能准确全面的说出来,反正我是做不到可能是我太菜了
    feixiangcode
        123
    feixiangcode  
       109 天前
    不懂没啥吧。一般后端团队里面只有一个人负责这个,其他人大多不关心配置问题。
    wangritian
        124
    wangritian  
       109 天前
    面试官应该更侧重考察解决问题的能力而非知识储备
    现在获取知识几乎是 0 成本了
    registerrr
        125
    registerrr  
       109 天前
    之前看到过一个挺有意思的问题,感觉也非常适合在面试的时候问:QQ 邮箱/空间,网页上的能显示头像的快捷登陆是如何实现的。
    能涉及到如何和本机服务做交互,DNS 解析,也能引申出跨域等各种问题。有没有真正自己注册过域名,并解析出来的经历。
    ccfly
        126
    ccfly  
       109 天前
    这种不算卷吧 实际开发中很容易遇到的 除非是完全一点和前端都没合作过的 但是这种也太少了吧
    wryyyyyyyyyyyy
        127
    wryyyyyyyyyyyy  
       109 天前
    我后端 5 年前端 3 年,都是用到的时候查一下,前后端都可以解决,并不是什么难事。但让我说,我也说不出来什么。
    lscho
        128
    lscho  
       109 天前
    @yeqizhang web 开发工作 1 ~ 2 年还没遇到过跨域问题,那是什么工作?上古时代写前后端不分离的 web 开发吗。。。

    [http 协议的 RFC 文档应该不写这个的] 然而事实上它还真写了,https://developer.mozilla.org/zh-CN/docs/Web/HTTPhttps://developer.mozilla.org/zh-CN/docs/Web/HTTP/Reference/Resources_and_specifications
    Quarter
        129
    Quarter  
       109 天前 via Android
    除非工作细分的非常多,不然跨越这种问题在和第三方集成和合作开发过程中经常遇到的,不能说完全不知道吧
    feitxue
        130
    feitxue  
       109 天前
    @249239432 #66
    也不用往 windows 硬件上走,讲应用层的东西就行。
    输入 url 要走 dns 解析成 ip ,可以聊两句 dns 。
    拿到 ip 访问源站,穿插进去 cdn ,tcp/udp/ip 协议,也可以聊到 http1.1,http2 这些,
    到达源站后,分发到具体的应用服务,如果是后端角色,穿插进去 nginx , 负载均衡, 反向代理,网关鉴权这类。
    返回的数据回到客户浏览器,如果是前端,就聊一下渲染相关的,我不是前端我就不写了。
    这些点大概聊到知道。
    这里面每个点都能深入聊。
    顺势就可以聊到是否有做过优化之类的。
    这是个很好的面试广度深度的题,需要面试官的能力比面试者要高很多才能轻松驾驭。
    unused
        131
    unused  
       109 天前
    @yeqizhang W3C 的标准
    Y25tIGxpdmlk
        132
    Y25tIGxpdmlk  
       109 天前
    @anviod #30 但是但是,为什么不允许跨站的愿意总该了解一下吧
    249239432
        133
    249239432  
       109 天前
    @feitxue 我说的是 windows 以及硬件,你看错了
    而且你说少了。首先是回车的键盘中断,然后是 windows 发送一个用户按下回车键的消息给浏览器
    浏览器收到这个消息才开始走 dns
    feitxue
        134
    feitxue  
       109 天前
    @249239432 #133
    老哥你做啥开发的。
    web 开发工程师真的要关注你提到的“回车的键盘中断,然后是 windows 发送一个用户按下回车键的消息给浏览器”这个点吗?
    延伸的问题就是 web 开发工程师要掌握的知识体系的边界在哪里。要不要关注到你提到的这个点。
    249239432
        135
    249239432  
       108 天前
    @feitxue 真。全栈,但是职位是做 web 开发的,
    上面是我遇到那个问题我的回答而已
    大部分遇到的程序员只会关心他所负责的那一亩三分地,多一点真就不会了,跟我印象中无所不能的程序员一点不沾边
    1  2  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3954 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:56 · PVG 08:56 · LAX 17:56 · JFK 20:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.