侥幸面试过几个前端。
发现有些工作了 3 年左右的前端说不清楚 ajax 跨域问题。
有些还能说出来使用 jsonp 解决办法,有些什么都不知道。
但都不能说出来跨域的原因。
这样的前端算不算很差?
1
whypool 2018-10-15 17:08:25 +08:00
跨越和前端 ajax 有啥关系?
|
2
TomatoYuyuko 2018-10-15 17:11:30 +08:00
一般配合服务端解决的,前端自己搞很烦的,可以试着配合 node 写点简单的接口就懂了。
|
3
34C 2018-10-15 17:11:45 +08:00
算
|
4
yoshiyuki 2018-10-15 17:13:40 +08:00
算,足以说明毫无学习意识
|
5
ianva 2018-10-15 17:14:40 +08:00
只能通过这种 API 的方式面试前端的人,怎么能得出前端水平如何来的,大部分时候前端不会关注一些服务器端的配置,所以这些的实现在前端看来并不长接触,了解也不会天天应用实践,说不清楚也正常,只能说是对细节平实不探究。
无论前端后端,重要的是编程能力,抽象能力,面对不同规模项目的选择和架构能力,这和知道个 API 细节,协议细节没有关系,前端大部分时间不关注协议细节,这只是前端获取数据时被黑盒后的东西。 |
6
ianva 2018-10-15 17:25:39 +08:00
1 楼说的更是,大部分时候 Ajax 和跨域没关系,跨域还是靠的 script 标签封装出来的 jsonp,而最新的 HTML5 的 XMLHttpRequest Level2 你也用不上,那是 IE10 以上版本的支持,国内估计大部分公司都用不上,所以说你能用上的一切方案都和 Ajax 没关系,你这问题自己都搞不明白
|
7
xinzhognyi OP @ianva 对于你的观点表示赞同,协议对于前端确实是个黑盒。
但我的问题还有个条件就是三年前端,如果是刚毕业或者工作一两年的话,还算正常。 三年前端如果还没有深入底层的主动观的话,是不是有点偏差了。 举个栗子:5 年高级 java 不去看 jvm,是不是也算偏差了。 |
8
annielong 2018-10-15 17:40:40 +08:00
ajax 牵扯跨域最好的解决方法也不是前端来处理吧,真用到跨域的场景,最好还是由后端或者构架师之类统一出一个解决方案,
|
9
qq976739120 2018-10-15 17:41:00 +08:00
跨域难道不是 nginx 去解决的吗???到底怎么做才是最正常的解决跨域呢?
|
10
chenno9 2018-10-15 17:44:12 +08:00
跨域不应该是后台解决的吗,我这里的后台不会弄,我才自己去学的
|
11
FINDCBI 2018-10-15 17:45:23 +08:00
你拿这发贴的时间,去看篇博客,就差不多懂了
|
12
ianva 2018-10-15 17:47:57 +08:00
@xinzhognyi 你看 JVM 你用 JVM 实现什么项目了么?和前端一样,前端大部分关注点完全不在这里,哪怕不了解协议的,我也不觉得和前端水平有啥差别,十多年过去了你问我汇编当时咋学的我记不住几个指令和寄存器细节,问我编译器后端的方案我也记不住了,因为项目上用不到,你了解和和用上是两回事情。
如此情况看来我不认为用来评判一个人的前端水平有什么帮助,只不过面试者自己没有判断能力罢了。 |
13
898601566 2018-10-15 17:48:32 +08:00
我个一年 php 的都要搞跨域,服务端很好解决
|
14
k9982874 2018-10-15 17:49:22 +08:00
前端能说出 jsonp 的算过。
后端能说出 nginx 端 cros 的算过。 |
15
geshansuiyue 2018-10-15 17:51:28 +08:00
要么浏览器设置跨域 要么就 nginx 要么配置 proxy
|
17
helone 2018-10-15 17:56:31 +08:00
。。。前端工作中就没遇到过跨域问题吗?现在都 vue react 这种前后端分离了啊
|
18
deming 2018-10-15 17:57:24 +08:00 3
我感觉 不是 “该谁做的” 问题 。
而是 前 /后 端 人员都得了解 “跨域”是个什么玩意。得理解什么是跨域。 无论前端后端,如果工作好几年仍然不理解什么是 “跨域”。 那说明他不怎么关心技术,技术体系也不怎么更新。反正现在会的那一点还能干活。 |
19
vevlins 2018-10-15 17:57:29 +08:00
差
|
20
oyosc 2018-10-15 18:00:04 +08:00
感觉有很多吧,之前我也面过一些前端,大部分都说不知道,这个是跟后端去说下就可以了...
|
21
royeyu 2018-10-15 18:02:24 +08:00
工作一年只会 cors 跨域很正常,工作三年不会 ajax 跨域不正常
|
23
allanzhuo 2018-10-15 18:04:14 +08:00
我知道四种,响应头设置,jsonp,网关,还有后台服务转发,还有其他方案吗。不过感觉也没啥用啊,用到的时候随便看看就懂了
|
24
wfd0807 2018-10-15 18:05:48 +08:00
算
|
25
98jiang 2018-10-15 18:07:23 +08:00
只知道个 jsonp 我后端
|
27
sagaxu 2018-10-15 18:16:04 +08:00 via Android
看过 JVM 的大佬们,倒是说说看,你在项目里是如何用到这个知识点的。
|
28
ianva 2018-10-15 18:48:57 +08:00
估计也就调个堆大小,真的要是有能力有自信,让面试的来问问面试官前端问题,自然知道自己知识的局限性了
|
29
bucky 2018-10-15 18:50:17 +08:00
跨域问题只能靠后端配合,没有什么方式是纯前端能解决的,否则设置这个安全策略就失去意义了
|
30
iyaozhen 2018-10-15 19:21:15 +08:00
@sagaxu 书到用时方恨少,最近有个 JAVA 项目( tcp server )老是假死,报了一堆 JVM 的错,看不懂
|
32
sxlzll 2018-10-15 19:25:15 +08:00
说明缺少 owner 意识,
如果只是招一个撸代码的,可以多方面考量, 如果想招能独当一面、把控整个项目的,可以减(很多)分了 |
33
helloworld12 2018-10-15 19:29:08 +08:00
工作碰到搜索下就会了...但是,过一两年,没用到,想不起来很正常啊,除非一直在同一个领域工作
|
34
kerr92 2018-10-15 19:39:11 +08:00
很差,日常项目不可能说都是后端提前帮你处理好,往往需要前端主动去沟通,CORS 或者 JSONP 都需要前端参与,接入外部那种没有办法改代码的接口,可能还要你去找后端同事帮你做代理
|
36
ChristopherWu 2018-10-15 20:02:59 +08:00 1
我简单总结一下:
跨域就是 从 a.com 发起对 b.com 的 网络请求,因为是两个不一样的域名,所以跨域了。 浏览器会根据 http 请求过来时的 origin 头部,对比是否允许访问当前网站, 从而对跨域做限制。 作此限制是历史原因:在以前 a.com 偷偷的弄了一个按钮,用户点了后,利用 cookies 就可以在背后成功访问 b.com/update_profile 之类的 API。 所以一般后端需要在做跨域限制时,根据 origin 头部,允许一些白名单访问。 #当然漏了很多细节: 如 POST 且多了几个头部的复杂请求,要先用 http 方法 OPTIONS 检查跨域与否,再发请求。 --- 前端简单懂一些,吹吹也是必须的,不然面对黑盒子可不靠谱。 |
37
xiaoxinshiwo 2018-10-15 20:14:41 +08:00 via Android
@qq976739120 nginx 也行,服务端返回消息头添加允许跨域也可以,总之服务端处理,前端 jsonp 也行吧
|
38
rekulas 2018-10-15 20:28:22 +08:00
不是有点差,是很差
|
39
PythonAnswer 2018-10-15 20:39:47 +08:00 via iPhone
一天之内肯定能搞清楚 何必发帖
|
40
sologgfun 2018-10-15 20:40:30 +08:00
看到这个贴 复习了一下这方面的知识。。 分享个链接吧 前端 4 种方法+后端 2 种方法 查漏补缺呀
https://segmentfault.com/a/1190000003642057 |
41
KgM4gLtF0shViDH3 2018-10-15 20:52:56 +08:00
现在水货越来越多了
|
43
SoulGem 2018-10-15 21:14:46 +08:00 via iPhone
差,就是这么不客气
|
44
xiaojie668329 2018-10-15 21:28:43 +08:00
人家问的是跨域的原因,都说起后端解决办法来了,怎么就跟前端无关。这是跟浏览器的渲染原理有关,跟同源策略、内容安全策略有关。不仅是 api 接口,加载图片、canvas 什么的都会需要注意好吗。动不动就扯架构,这点东西都不会谈什么架构。工作三年不知道就是菜。
|
45
leconio 2018-10-15 21:48:00 +08:00 via Android
我觉得跨域设计就是一坨屎
今天下午都在用 socket 实现 http,双端编写代码。就解决这个夸域问题,真恶心。 何况 http 本来就是不安全的,夸域限制也不能很好解决问题 |
47
yhxx 2018-10-15 22:06:59 +08:00
算
这不是楼上说的 API 的问题 这说明这个人连同源都不知道 |
48
ChristopherWu 2018-10-15 22:11:26 +08:00
@leconio http 不安全,那 https 安全了吧?一样要做跨域限制啊。
|
49
Debiancc 2018-10-15 23:05:38 +08:00
没人说同源策略??
|
50
t6attack 2018-10-15 23:23:43 +08:00 1
搞清楚浏览器为什么要限制跨域请求,不就好理解了嘛?
访客访问一个页面,该页面可以自由对它域进行操作。会导致什么后果? 可以在访客不知情的情况下,对其他网站进行注册机式攻击、垃圾信息轰炸。可以给其他网站页面刷点击量,给某个视频刷攒。刷某个关键词刷搜索量。。甚至可以 保持长连接 /定时循环请求,让在线访客 随时等候服务端指令,收到指令后,在线用户集体对外域执行各种操作。。 还可以据此实现一个访客代理,每个访客都可以变成一个代理 IP 资源。服务端爬虫受到 IP 限制是吧?那我就利用用访客端发送请求。 只要你的网站有一个外国访客在线,那么你可以直接利用这个外国访客进行 科学上网 了。 可以这么说:如果允许跨域,访客就成肉鸡了。 |
51
initsa 2018-10-16 09:18:17 +08:00
跨域是浏览器的问题, 工作几年还不懂的前端,要不是后端惯的,要不就是虚报的工作年限·····刚工作我感觉就会遇到跨域的问题了``不可能不知道吧
|
52
xinzhognyi OP @sagaxu 对于这种观点不敢苟同,意思工作中用不到就不用去了解,那那么多大牛就都不用看什么 jvm 了。
都只用明白个增删改查就好了,反正项目中也用不到。国外又有人去写源码。调调框架就好了,何必费那么多力气去看什么源码。 |
53
yoshiyuki 2018-10-16 10:57:11 +08:00
@k9982874 光说出不行呀,JSONP 至少要能说明白需要后端支持和以及不支持 POST 等缺点; CORS 至少要搞明白区分简单请求和复杂请求、以及浏览器兼容性和 cookie 跨域的问题。
|
54
sagaxu 2018-10-16 11:56:30 +08:00 via Android
@xinzhognyi 我觉得知识来源不应该是某个软件源码或者熟悉某个软件的参数。有那么多经典著作和论文,可以系统和深入的学习。
业界 jvm 大牛,有几个不是实际工作需要改造或者优化 jvm 本身的?很多公司面试问 jvm 的时候,也仅限于粗犷的描述一下内存布局,几种 gc 的原理,hashmap 的实现,再加上点内存模型,这些东西在 jvm 之外,有更系统全面和深入的书可以看。 @hackerang 那不是 jvm 调优,只是调几个运行参数,没什么技术含量。 纸上谈兵没有意义,举几个实际例子才有说服力。 |
55
jiangruilove123 2018-10-16 13:31:49 +08:00
那估计是培训班出来的,真的三年不可能不了解跨域的,不了解跨域,根本没法写 ajax 请求吧
|
56
wolfie 2018-10-16 13:34:34 +08:00
刚遇到跨域问题时候,同一部门包括项目经理,2 ~ 7 年的,没有一个知道的。
小城市,小外包公司,平时不看博客之类的,不知道很普遍吧。 |
58
Anshi 2018-10-16 14:27:28 +08:00
跨域有个大前提 是 浏览器才会出来跨域限制了,一些策略也是浏览器自己做的,不说怎么解决跨域问题,理解一下我觉得很正常吧。。不说浏览器怎么实现了,至少浏览器的行为我觉得就算是一年的前端也应该清清楚楚。。。
知道为什么发生,离知道解决方法也不远了,就算答不出解决方法,知道为什么出现这种问题我觉得面试官对你印象不会太差。。。 |
59
fulvaz 2018-10-16 14:37:10 +08:00
- - 在这讨论前端怕是要自寻死路
|
60
yuriko 2018-10-16 15:06:50 +08:00
我一个 android 都知道什么是跨域了……这三年前端是不是有点……
|
61
js0816 2018-10-16 15:48:37 +08:00
看什么年份 都是假的 这都不知道 那就约等于不能干活了说实在的 你说你干活只能写点 htmlcss 啥的就太过分了
|
62
clare233 2018-10-17 12:22:28 +08:00
因为跨域让后端去解决很容易呀.. 虽然前端也有跨域的解决方法, 但是不能为了考虑工作成本选择更方便的解决办法吗?
|
63
ChanKc 2020-08-19 12:27:45 +08:00 via Android
挖坟
我觉得 cors 是最没有意思的问题。我搜了搜 v2ex,看到大部分和 cors 有关的问题其实都没有必要 cors 。我工作三年也没用在生产上用过 cors 。 我感觉 cors 的应用场景非常有限:你有 API 开放给别人且允许别人在浏览器上使用。你要给静态资源做 domain sharding 图片浏览器的并发限制。你要在浏览器上用模块化 js ( mjs )。 cors 的本意是浏览器觉得你请求一个不属于你的域名上的东西都是不安全的(实际上多数情况下确实是这样)。反过来说,都是属于你的东西就该尽可能放在一个域名下面。你的前端请求后端,都是你自己的东西,还分出俩域名 example.com 和 api.example.com 图啥? |