V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
MrZephyrus
V2EX  ›  JavaScript

js 跨域读取 json 问题

  •  
  •   MrZephyrus · 2015-10-15 10:00:01 +08:00 · 2697 次点击
    这是一个创建于 3121 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前几天想写个抓取 bing 每日壁纸作为 chrome 新标签页背景的插件,可是 chrome 插件貌似只支持 js 。而 js 想跨域读取 json 的话,也必须有服务端的支持,比如这个:

    JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成 Script tags 返回至客户端,通过 javascript callback 的形式实现跨域访问

    想读取的 json 地址:http://cn.bing.com/HPImageArchive.aspx?forma=js&idx=1&n=1&nc=1443074799572&pid=hp&video=1

    chrome 应用商店已经有插件实现了类似功能, yahoo 的 FlikrTab ,不知道它这个是怎么实现的,难道在 yahoo 服务器上有对应的代码传递数据给 js ?求大牛解释一下

    14 条回复    2015-10-15 17:19:04 +08:00
    learnshare
        1
    learnshare  
       2015-10-15 10:12:05 +08:00
    不对, Chrome 插件允许跨域加载文件
    https://developer.chrome.com/extensions/xhr#requesting-permission
    xuxu
        2
    xuxu  
       2015-10-15 10:12:56 +08:00
    当成 text 读过来 parse 一下就行了。
    MrZephyrus
        3
    MrZephyrus  
    OP
       2015-10-15 10:23:25 +08:00
    @learnshare 真的有,感谢了,去试一下
    MrZephyrus
        4
    MrZephyrus  
    OP
       2015-10-15 10:23:51 +08:00
    @xuxu 应该还是得用 XMLHttpRequest()吧?
    xuxu
        5
    xuxu  
       2015-10-15 10:33:23 +08:00
    @MrZephyrus 1 楼给的就是一样的意思,里面有提到不要用 eval 来解析,避免出现恶意代码。
    MrZephyrus
        6
    MrZephyrus  
    OP
       2015-10-15 10:37:06 +08:00
    @xuxu thx
    bertonzh
        7
    bertonzh  
       2015-10-15 11:05:11 +08:00
    Chrome extension API 的 XMLHttpRequest 支持跨域,可能需要先在 manifest.json 里面添加一下内容权限。
    MrZephyrus
        8
    MrZephyrus  
    OP
       2015-10-15 11:10:59 +08:00
    @bertonzh 行,谢谢
    MrZephyrus
        9
    MrZephyrus  
    OP
       2015-10-15 15:49:50 +08:00
    @learnshare 我发现这样不行,这个 json 地址是不会做出任何响应的,那我 XMLHttpRequest()中的 onreadystatechange 就没有作用
    MrZephyrus
        10
    MrZephyrus  
    OP
       2015-10-15 15:55:37 +08:00
    @learnshare 是不是只要这个静态页面响应就 ok 了?
    learnshare
        11
    learnshare  
       2015-10-15 15:59:27 +08:00
    @MrZephyrus 我并没有实践过,没法回答你了
    MrZephyrus
        12
    MrZephyrus  
    OP
       2015-10-15 16:02:05 +08:00
    @learnshare 好吧,谢谢了
    MrZephyrus
        14
    MrZephyrus  
    OP
       2015-10-15 17:19:04 +08:00
    @hcymk2
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   900 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 22:53 · PVG 06:53 · LAX 15:53 · JFK 18:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.