V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
uiosun
V2EX  ›  程序员

HTTP 服务可以防跨域,但小程序怎么办呢?

  •  
  •   uiosun · Mar 1, 2021 · 4384 views
    This topic created in 1883 days ago, the information mentioned may be changed or developed.

    蠢了蠢了,才发现 wx.request 本身就是个域,单独限定就好。


    求助老哥,小程序有没有类似的跨域机制,防止第三方服务访问我的接口?

    meshell
        1
    meshell  
       Mar 1, 2021   ❤️ 1
    "http 服务可以防跨域"是啥意思? 跨域是浏览器的限制呀
    KyonLi
        2
    KyonLi  
       Mar 1, 2021
    绑定域名要验证所有权的
    uiosun
        3
    uiosun  
    OP
       Mar 1, 2021
    @meshell ……CROS 是服务端限制。至于你说的“浏览器的安全设置”,是后期才添加的(早期的一些浏览器,甚至没有 CROS 安全设定)
    meshell
        4
    meshell  
       Mar 1, 2021   ❤️ 4
    @uiosun .....
    weixiangzhe
        5
    weixiangzhe  
       Mar 1, 2021 via iPhone
    也可以加上 carf token 一类东西 限制一下
    shakaraka
        6
    shakaraka  
    PRO
       Mar 1, 2021
    。。。。。什么鬼需求。浏览器能防止而已,反代不久破了么?
    ByZHkc3
        7
    ByZHkc3  
       Mar 1, 2021
    小程序很简单啊,你每次请求接口时用 wx.login 拿到 code,用这个 code 在后端做鉴权拦截就好了,一个用户一分钟最多只能请求 100 次这个接口,足够用了
    uurun
        8
    uurun  
       Mar 1, 2021
    跨域是浏览器限制的
    qinxi
        9
    qinxi  
       Mar 1, 2021
    @uiosun #3 ???你在说什么
    yiqiao
        10
    yiqiao  
       Mar 1, 2021
    跨域和第三方服务访问没有关系啊,
    要想防止就做接口鉴权。
    luoxiaoyang2021
        11
    luoxiaoyang2021  
       Mar 1, 2021
    CROS 是服务端限制到没错、但是只有浏览器遵守了它
    fucUup
        12
    fucUup  
       Mar 1, 2021 via Android
    楼主你虚心一点,
    预检请求返回后,所有浏览器都会遵守的,微信浏览器也会遵守

    你什么都不用做,你在干啥呢
    huabalance
        13
    huabalance  
       Mar 1, 2021
    Cross-Origin Resource Sharing (CORS)
    Cross-site request forgery (CSRF)
    bruce0
        14
    bruce0  
       Mar 1, 2021
    @meshell 对呀 没看懂啥意思
    HTTP 协议是没有跨域限制的, 日常说的跨域是浏览器做的限制
    chinvo
        15
    chinvo  
       Mar 1, 2021 via iPhone
    cors 响应头是服务器发的,但是限制是客户端(浏览器)自己限制的,不遵守 cors 的“客户端”就可以无视了,比如对方用代码转发,甚至更简单点,用 Nginx 转发。
    musi
        16
    musi  
       Mar 1, 2021   ❤️ 1
    @uiosun 我寻思这 CORS 报错是浏览器报的错吧?而且请求也是正常发送的,只是把响应拦截了而已。cors 响应头更像是服务端设置的开关,告诉浏览器什么时候作出限制。
    如果说 CORS 是服务端的限制,那不管你的客户端是什么,只要请求这个后端都会受到 CORS 的限制,如果是这样你的这个问题也就不存在了吧?
    附一个 MDN 地址(这片不建议看中文,翻译有点歧义):
    https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    wxsm
        17
    wxsm  
       Mar 1, 2021   ❤️ 1
    > CROS 是服务端限制

    你真搞错了,CROS 是纯客户端限制,真正意义上的君子协定。从服务端安全角度上来说起不到任何作用。
    ByteRan
        18
    ByteRan  
       Mar 1, 2021
    CROS 有乱用,我不用浏览器,照样绕过。token 就能解决你这个问题
    whypool
        19
    whypool  
       Mar 1, 2021 via Android
    调用微信鉴权的逻辑就行了
    renmu123
        20
    renmu123  
       Mar 1, 2021 via Android
    楼上的 cros 都是故意的吗,如果是服务端设置,那就不存在爬虫工程师了
    zzzmj
        21
    zzzmj  
       Mar 1, 2021
    cros ...
    jinliming2
        22
    jinliming2  
       Mar 1, 2021   ❤️ 1
    CROS 是什么鬼……不是 CORS 么……😂
    CORS 只能防止第三方不能再浏览器上直接请求你的接口,但不能防止第三方服务访问你的接口。
    防止第三方服务访问很困难,因为你的所有限制都可以通过第三方反代解除。
    加 token 、加校验都只能是提升那么一丢丢门槛而已。
    uiosun
        23
    uiosun  
    OP
       Mar 1, 2021
    @jinliming2 原来是这样,年轻了,我还以为是服务端做的操作(凭着感觉打出了 CROS,🤣)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4010 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 04:17 · PVG 12:17 · LAX 21:17 · JFK 00:17
    ♥ Do have faith in what you're doing.