js 跨域读取 json 问题

2015-10-15 10:00:01 +08:00
 MrZephyrus
前几天想写个抓取 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]( http://cn.bing.com/HPImageArchive.aspx?format=js&idx=1&n=1&nc=1443074799572&pid=hp&video=1)

chrome 应用商店已经有插件实现了类似功能, yahoo 的 FlikrTab ,不知道它这个是怎么实现的,难道在 yahoo 服务器上有对应的代码传递数据给 js ?求大牛解释一下
2777 次点击
所在节点    JavaScript
14 条回复
learnshare
2015-10-15 10:12:05 +08:00
不对, Chrome 插件允许跨域加载文件
https://developer.chrome.com/extensions/xhr#requesting-permission
xuxu
2015-10-15 10:12:56 +08:00
当成 text 读过来 parse 一下就行了。
MrZephyrus
2015-10-15 10:23:25 +08:00
@learnshare 真的有,感谢了,去试一下
MrZephyrus
2015-10-15 10:23:51 +08:00
@xuxu 应该还是得用 XMLHttpRequest()吧?
xuxu
2015-10-15 10:33:23 +08:00
@MrZephyrus 1 楼给的就是一样的意思,里面有提到不要用 eval 来解析,避免出现恶意代码。
MrZephyrus
2015-10-15 10:37:06 +08:00
@xuxu thx
bertonzh
2015-10-15 11:05:11 +08:00
Chrome extension API 的 XMLHttpRequest 支持跨域,可能需要先在 manifest.json 里面添加一下内容权限。
MrZephyrus
2015-10-15 11:10:59 +08:00
@bertonzh 行,谢谢
MrZephyrus
2015-10-15 15:49:50 +08:00
@learnshare 我发现这样不行,这个 json 地址是不会做出任何响应的,那我 XMLHttpRequest()中的 onreadystatechange 就没有作用
MrZephyrus
2015-10-15 15:55:37 +08:00
@learnshare 是不是只要这个静态页面响应就 ok 了?
learnshare
2015-10-15 15:59:27 +08:00
@MrZephyrus 我并没有实践过,没法回答你了
MrZephyrus
2015-10-15 16:02:05 +08:00
@learnshare 好吧,谢谢了
hcymk2
2015-10-15 16:10:22 +08:00
MrZephyrus
2015-10-15 17:19:04 +08:00
@hcymk2

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/228174

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX