V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xia0chun
V2EX  ›  问与答

问一个关于 JSON 跨域请求的问题

  •  
  •   xia0chun · 2014-06-09 20:37:27 +08:00 · 3576 次点击
    这是一个创建于 3850 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位好,又来提问了
    想用 @RelativeLayout 提供的“榨干百度网盘计划”,构造好URL之后,直接在浏览器里访问是可以的,例如 http://daimajia.duapp.com/baidu/?url=http://pan.baidu.com/s/1bn7tXHd


    我现在想用js来获取并解析这段JSON,试了好几个方法都不行,想请哪位好心给讲一下。

    我从网上找了一段jQuery跨域请求JSON的例子,这个例子是可以请求到JSON数据:


    然后我依葫芦画瓢修改了一下,就无法返回数据:


    请问这是什么原因?谢谢
    17 条回复    2014-06-12 06:15:28 +08:00
    jsonline
        1
    jsonline  
       2014-06-09 20:48:52 +08:00 via Android   ❤️ 1
    它没跨域,你跨域了。
    JSON 无法跨域用 ajax 请求,除非加了 CORS 头。
    JSONP 可以做到,但前提是该域名有提供 JSONP 接口。
    Chrome App 里的 JS 可以随便跨域。
    switch
        2
    switch  
       2014-06-09 20:59:04 +08:00   ❤️ 1
    http://daimajia.duapp.com/baidu
    这个 app 是你的吗?如果是就把返回的 JSON 方式改成 JSONP 方式就可以了。
    learnshare
        3
    learnshare  
       2014-06-09 21:02:04 +08:00   ❤️ 1
    你所请求的资源和 HTML 不在同域名同端口的服务器下,就是跨域了。出于安全考虑,浏览器不允许这么干。有三种方法可以解决:

    1. 放到同域名同端口下(这个做不到);
    2. 服务器端支持 JSONP 的请求方式(这个也做不到吧);
    3. 服务器端配置 CORS(Cross-origin resource sharing)(这个还是做不到)。

    可以尝试用后端语言来请求这个资源,并完成解析。后端没有跨域这种东西。
    xia0chun
        4
    xia0chun  
    OP
       2014-06-09 21:07:52 +08:00
    @switch 这个不是我的,是 @RelativeLayout 的,我想用他的服务端直接来获取下载地址的
    xia0chun
        5
    xia0chun  
    OP
       2014-06-09 21:09:29 +08:00
    @jsonline
    @learnshare
    谢谢二位的指点,不知道 @RelativeLayout 能否添加上JSONP支持呢,谢谢 :)

    以上回复,感谢已发
    learnshare
        6
    learnshare  
       2014-06-09 21:14:20 +08:00
    @xia0chun 不如你直接找他要代码咯
    RelativeLayout
        7
    RelativeLayout  
       2014-06-09 21:15:18 +08:00 via iPhone   ❤️ 1
    没问题 本来只计划客户端使用的,明天或者后天就搞定 搞定了来戳你
    ChanneW
        8
    ChanneW  
       2014-06-09 21:16:00 +08:00
    后端处理
    xia0chun
        9
    xia0chun  
    OP
       2014-06-09 21:17:48 +08:00
    @learnshare 刚才看了一下源码就托管在Github上的,不想自己在搭建了 :)
    xia0chun
        10
    xia0chun  
    OP
       2014-06-09 21:19:16 +08:00
    @RelativeLayout 真是太谢谢了 :)
    xia0chun
        11
    xia0chun  
    OP
       2014-06-09 21:20:46 +08:00
    @ChanneW 其实我想的是生成静态的下载页面,那样就可以放在Farbox或者Github或者qiniu上了,不需要动态语言的支持,嘿嘿。
    ChanneW
        12
    ChanneW  
       2014-06-09 21:30:43 +08:00
    @xia0chun 那就在你生成静态界面的时候转掉.
    xia0chun
        13
    xia0chun  
    OP
       2014-06-09 21:32:23 +08:00
    @ChanneW 貌似返回的下载地址不是固定的吧?所以没有办法直接写死在静态页面里
    xia0chun
        15
    xia0chun  
    OP
       2014-06-11 22:34:25 +08:00
    @RelativeLayout 亲,能否给我一个例子啊,搞了一晚上也没取到数据。抱歉我只会依葫芦画瓢 :(
    RelativeLayout
        16
    RelativeLayout  
       2014-06-11 23:03:44 +08:00 via iPhone
    @xia0chun 这两天有点小忙,稍等两天给你写个
    xia0chun
        17
    xia0chun  
    OP
       2014-06-12 06:15:28 +08:00
    @RelativeLayout 嗯嗯,好的。先谢谢了 :)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1101 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:53 · PVG 02:53 · LAX 10:53 · JFK 13:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.