蠢了蠢了,才发现 wx.request 本身就是个域,单独限定就好。
求助老哥,小程序有没有类似的跨域机制,防止第三方服务访问我的接口?
1
meshell 2021-03-01 16:35:54 +08:00 1
"http 服务可以防跨域"是啥意思? 跨域是浏览器的限制呀
|
2
KyonLi 2021-03-01 16:37:14 +08:00
绑定域名要验证所有权的
|
3
uiosun OP @meshell ……CROS 是服务端限制。至于你说的“浏览器的安全设置”,是后期才添加的(早期的一些浏览器,甚至没有 CROS 安全设定)
|
5
weixiangzhe 2021-03-01 16:47:53 +08:00 via iPhone
也可以加上 carf token 一类东西 限制一下
|
6
wunonglin 2021-03-01 16:49:42 +08:00
。。。。。什么鬼需求。浏览器能防止而已,反代不久破了么?
|
7
ByZHkc3 2021-03-01 16:55:55 +08:00
小程序很简单啊,你每次请求接口时用 wx.login 拿到 code,用这个 code 在后端做鉴权拦截就好了,一个用户一分钟最多只能请求 100 次这个接口,足够用了
|
8
uurun 2021-03-01 17:15:48 +08:00
跨域是浏览器限制的
|
10
yiqiao 2021-03-01 17:45:33 +08:00
跨域和第三方服务访问没有关系啊,
要想防止就做接口鉴权。 |
11
luoxiaoyang2021 2021-03-01 17:49:12 +08:00
CROS 是服务端限制到没错、但是只有浏览器遵守了它
|
12
fucUup 2021-03-01 18:25:16 +08:00 via Android
楼主你虚心一点,
预检请求返回后,所有浏览器都会遵守的,微信浏览器也会遵守 你什么都不用做,你在干啥呢 |
13
huabalance 2021-03-01 18:37:00 +08:00
Cross-Origin Resource Sharing (CORS)
Cross-site request forgery (CSRF) |
15
chinvo 2021-03-01 18:45:23 +08:00 via iPhone
cors 响应头是服务器发的,但是限制是客户端(浏览器)自己限制的,不遵守 cors 的“客户端”就可以无视了,比如对方用代码转发,甚至更简单点,用 Nginx 转发。
|
16
musi 2021-03-01 19:04:12 +08:00 1
@uiosun 我寻思这 CORS 报错是浏览器报的错吧?而且请求也是正常发送的,只是把响应拦截了而已。cors 响应头更像是服务端设置的开关,告诉浏览器什么时候作出限制。
如果说 CORS 是服务端的限制,那不管你的客户端是什么,只要请求这个后端都会受到 CORS 的限制,如果是这样你的这个问题也就不存在了吧? 附一个 MDN 地址(这片不建议看中文,翻译有点歧义): https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS |
17
wxsm 2021-03-01 19:05:06 +08:00 1
> CROS 是服务端限制
你真搞错了,CROS 是纯客户端限制,真正意义上的君子协定。从服务端安全角度上来说起不到任何作用。 |
18
tanranran 2021-03-01 19:07:36 +08:00
CROS 有乱用,我不用浏览器,照样绕过。token 就能解决你这个问题
|
19
whypool 2021-03-01 19:17:31 +08:00 via Android
调用微信鉴权的逻辑就行了
|
20
renmu123 2021-03-01 19:29:07 +08:00 via Android
楼上的 cros 都是故意的吗,如果是服务端设置,那就不存在爬虫工程师了
|
21
zzzmj 2021-03-01 19:32:47 +08:00
cros ...
|
22
jinliming2 2021-03-01 19:43:38 +08:00 1
CROS 是什么鬼……不是 CORS 么……😂
CORS 只能防止第三方不能再浏览器上直接请求你的接口,但不能防止第三方服务访问你的接口。 防止第三方服务访问很困难,因为你的所有限制都可以通过第三方反代解除。 加 token 、加校验都只能是提升那么一丢丢门槛而已。 |
23
uiosun OP @jinliming2 原来是这样,年轻了,我还以为是服务端做的操作(凭着感觉打出了 CROS,🤣)
|