v2ex 接口 fetch 不到?

2016-01-02 21:19:14 +08:00
 xwartz

今天想尝试下 vue.js ,就拿 V2EX 练手, fetch 不到数据啊, response.status 都是 0 啊,难道是我写错了?最后无奈的直接用了 json 文件...
demo 可以看这里( https://github.com/xwartz/vue-v2ex)

fetch('https://www.v2ex.com/api/topics/latest.json', {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json;charset=UTF-8'
    },
    mode: 'no-cors'
  }).then(res => {
    if (res.status >= 200 && res.status < 300) {
      return Promise.resolve(res)
    } else {
      return Promise.reject(new Error(res.statusText))
    }
  }).then(res => {
    return res.json()
  }).then(data => {
    return data
  }).catch(err => {
    console.log(err)
  })
2440 次点击
所在节点    V2EX
8 条回复
aliuwr
2016-01-02 22:29:50 +08:00
API 貌似有一些访问限制,我之前用 wget 就无法正常访问,非要手动用浏览器打开了再另存为。
xwartz
2016-01-02 23:17:52 +08:00
@aliuwr 好像是只能在 v2ex.com 下才可以
zsx
2016-01-02 23:50:04 +08:00

百度一下 CORS
xwartz
2016-01-03 00:07:30 +08:00
@zsx 你这是直接在地址栏打开的? 我下面这样写有什么问题吗,设置了 `no-cors`

```js
fetch('https://www.v2ex.com/api/topics/hot.json', {mode: 'no-cors'}).then(function(res){console.log(res)})
```
qinix
2016-01-03 00:43:44 +08:00
跨域啊……肯定不行啊…
xwartz
2016-01-03 01:06:02 +08:00
@qinix 是因为 V2EX 本身就没有设置 Access-Control-Allow-Origin 吗,我对这方面不了解...
那提供的 api 怎么用
qinix
2016-01-03 01:21:33 +08:00
@xwartz 非要在前端调用的话可以看看 API 提不提供 jsonp ,如果没有 jsonp 的话只能在后端调用了
falcon05
2016-01-03 11:23:08 +08:00
可以用 YQL 之类的中转,那个是支持 CORS 的

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

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

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

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

© 2021 V2EX