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

本地跨域问题

  •  
  •   yukinotech · 2021-04-22 01:48:55 +08:00 · 2359 次点击
    这是一个创建于 1304 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求:自己写了一个脚本,想在手机上用,类似 index.html,有 gui 。问题是浏览器安全策略导致所有跨域请求都发不出去。

    目前只想到 2 个解决办法:
    1 、自己写一个 native apk,绕过去

    2 、下载一个低版本,或者可以自定义安全策略的浏览器

    个人移动端浏览器可 diy 性好低,基本也装不了插件。看看有没有 dalao 有什么想法
    14 条回复    2021-04-30 18:22:36 +08:00
    eason1874
        1
    eason1874  
       2021-04-22 02:53:41 +08:00
    你 2 个方法都避开了常规做法。

    直接解决跨域问题就行了,如果请求站点在自己控制范围可以设置 Access-Control-Allow-Origin 头,如果是第三方站点可以在本地配置一个反代。
    rain0002009
        2
    rain0002009  
       2021-04-22 08:42:29 +08:00
    然而已经有了这么一个 app 叫 dorajs
    5200
        3
    5200  
       2021-04-22 09:34:17 +08:00
    1. nginx 添加反向代理
    2. 了解一下 cors 策略
    yukinotech
        4
    yukinotech  
    OP
       2021-04-22 12:15:24 +08:00
    @eason1874 统一回复一下,后端服务不是自己的,抓的 api
    yukinotech
        5
    yukinotech  
    OP
       2021-04-22 12:24:49 +08:00
    @5200 户外使用,除非安卓端能起一个 nginx 或者类似 nginx 的本地代理转发。如果有这样的软件,辛苦分享一下
    DOLLOR
        6
    DOLLOR  
       2021-04-22 14:25:06 +08:00
    后端不是自己的话,只能做成 APP,或者用自己的服务器转发。
    no1xsyzy
        7
    no1xsyzy  
       2021-04-22 15:50:19 +08:00
    你的前端放在静态空间?
    简单点,直接搞个 native,不要用网页。
    直接用别人的 API 会不会被找上门?
    fjc0k
        8
    fjc0k  
       2021-04-22 17:28:10 +08:00   ❤️ 1
    搞成小程序,开发版把所有校验关掉就行了。
    5200
        9
    5200  
       2021-04-22 18:33:43 +08:00
    如果你没有服务器
    1. 写一个 apk 。
    2. 使用免费服务器,挂 https://github.com/Rob--W/cors-anywhere,可以 index.html 走接口解决跨域。
    如果有服务器
    那都不是问题。

    楼主可以说明一下手上现有的资源。
    只是单纯请求 api 接口,你直接用 Auto.js 之类的更方便。
    longgediyi999
        10
    longgediyi999  
       2021-04-23 14:26:47 +08:00
    https://www.npmjs.com/package/jsonp 起个服务器就可以
    SmiteChow
        11
    SmiteChow  
       2021-04-23 15:48:49 +08:00   ❤️ 1
    我有新式解法,跨域安全策略可以用浏览器插件 https://mybrowseraddon.com/access-control-allow-origin.html 解决

    你可以写个简单的 html 页面配合这个插件就可以了

    但这个插件只能在 PC 端使用,而你要在移动端使用那就需要 [代理] 了,绕不过去的

    如果你没有云服务器作代理或者不愿意搞后端那堆东西,那就用你的 PC 前端页面做代理,这个时候 p2p 就上场了

    需要用到 https://www.npmjs.com/package/dshell 分布式浏览器动作流框架,改造 html 页面跨域 fetch 逻辑封装成 action

    移动端就可以通过 PC 端远程执行 action 获取数据了
    yukinotech
        12
    yukinotech  
    OP
       2021-04-30 18:16:52 +08:00
    已用 native 实现 ,此贴完结
    yukinotech
        13
    yukinotech  
    OP
       2021-04-30 18:19:11 +08:00
    @SmiteChow 感谢分享,拓展了视野
    yukinotech
        14
    yukinotech  
    OP
       2021-04-30 18:22:36 +08:00
    @fjc0k 这个思路可以有,感谢分享
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1170 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:42 · PVG 02:42 · LAX 10:42 · JFK 13:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.