首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

别人家的 api 不允许跨域,是不是 xmlhttprequest 没用了,要在 header 里加 Authorization,可是不是普通的 form 表单也不能用了,是不是只能用服务器脚本和 curl 才行了啊?(网页端)

  •  
  •   pinews · 67 天前 · 2673 次点击
    这是一个创建于 67 天前的主题,其中的信息可能已经有所发展或是发生改变。
    27 回复  |  直到 2019-09-29 18:09:30 +08:00
        1
    IsaacYoung   67 天前
    用自己的服务器代理一下
        2
    Liang   67 天前
    proxy server
        3
    dbj1991   67 天前
    jsonp
        4
    wunonglin   67 天前
    nginx 饭袋
        5
    arrow8899   67 天前
    前端没法搞的,加个 nginx 代理一下
        6
    secretman   67 天前
    找别人家去啊
        7
    fumichael   67 天前   ♥ 3
    跨域是浏览器的同源策略
    Authorization 是接口鉴权
    那个回复 jsonp 的我就不想说他了
        8
    shintendo   67 天前
    @dbj1991 别人家的 api 你 jsonp ?
        9
    darknoll   67 天前
    @dbj1991 你怎么不说 CORS ?
        10
    tinytin   67 天前 via iPhone
    不允许跨域,你前端加啥都没用
        11
    catch   67 天前 via iPhone
    你把大火逗乐了
        12
    kyoukai   67 天前
    iframe 不算跨域,试试?主页面操作子页面的 iframe。
        13
    pinews   67 天前
    @IsaacYoung
    @Liang
    @arrow8899
    @wunonglin 不太懂,我的意思是不用服务器,只用浏览器就可以实现的,当成不依赖服务端的独立客户端一样。。


    @tinytin
    @kyoukai 不加 header 的话 form 表单就可以了,上传的 token 是放在字段里的,但是其他操作验证是 header 里的。
        14
    shintendo   67 天前
    @pinews 意思是你没有后端,你的网页直接调别人 api ?那你这个网页谁来 serve 呢?
        15
    Trim21   67 天前 via Android
        16
    littlespider89   67 天前
    @pinews 不允许跨域浏览器是根本不能用 xhr 访问其他域的,不管怎么操作都不行,这是最基本的安全保证

    form 表单提交和 xhr 是不一样的,form 表单提交你已经跳转到别人的页面上了,你还是没办法获取并操作数据
        17
    arrow8899   67 天前
    @pinews 如果浏览器能直接跨域,那么浏览器的同源策略有什么意义呢
        18
    speedofstephen   67 天前
    隐约记得 chrome 关闭一个安全选项,就可以进行跨域访问了。
        19
    npe   67 天前 via iPhone
    是的,浏览器不允许 XHR 跨域访问。
        20
    wunonglin   67 天前
    @pinews 没用,必须要后台或者 nginx 饭袋
        21
    cyrbuzz   67 天前
    巧了...
    刚写了一个前端的学习项目,调用的实验楼 API 也是不允许跨域的。
    解决方法也是常规的在自己写一个后端代理做转发。
    这里是前端地址( Vue + axios ):
    https://github.com/HuberTRoy/vue-shiyanlou

    这里是写的代理转发地址( Django + requests ):

    https://github.com/HuberTRoy/vue-shiyanlou-backend

    还总结了一下最后有写跨域部分:
    https://juejin.im/post/5d8ec6f0e51d4577ef53de1e
        22
    Curtion   67 天前
    只能用服务器代理一下,或者修改 chrome 配置,例如使用 electron 开发软件就可以关闭同源策略来跨域访问。
        23
    pinews   67 天前
    @littlespider89 原来的想法是演示性质的,只要结果预期就可以了。
    @Trim21 你太了解我了

    @arrow8899 有些 api 是可以跨域的,如 github,如果采用非网页开发,就不考虑跨域问题了。
    @wunonglin 明白了。
        24
    pinews   67 天前
    @Curtion 好的,我去了解一下 electron。
        25
    Curtion   67 天前
    @pinews #24 electron 可以跨域是因为可以设置 webPreferences.webSecurity = false 来关闭 web 安全检测达到跨域。如果是网站的话你只能要求有效访问者关闭浏览器中的安全策略,如果你不能这么做,那么就只能使用服务器代理者一种方式
        27
    yexiaoxing   67 天前 via iPhone
    now.sh 搞个 serverless 的代理
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   979 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 22:24 · PVG 06:24 · LAX 14:24 · JFK 17:24
    ♥ Do have faith in what you're doing.