今天想尝试下 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)
})
1
aliuwr 2016-01-02 22:29:50 +08:00
API 貌似有一些访问限制,我之前用 wget 就无法正常访问,非要手动用浏览器打开了再另存为。
|
3
zsx 2016-01-02 23:50:04 +08:00
百度一下 CORS |
4
xwartz OP @zsx 你这是直接在地址栏打开的? 我下面这样写有什么问题吗,设置了 `no-cors`
```js fetch('https://www.v2ex.com/api/topics/hot.json', {mode: 'no-cors'}).then(function(res){console.log(res)}) ``` |
5
qinix 2016-01-03 00:43:44 +08:00 via iPhone
跨域啊……肯定不行啊…
|
6
xwartz OP @qinix 是因为 V2EX 本身就没有设置 Access-Control-Allow-Origin 吗,我对这方面不了解...
那提供的 api 怎么用 |
7
qinix 2016-01-03 01:21:33 +08:00 via iPhone
@xwartz 非要在前端调用的话可以看看 API 提不提供 jsonp ,如果没有 jsonp 的话只能在后端调用了
|
8
falcon05 2016-01-03 11:23:08 +08:00 via iPhone
可以用 YQL 之类的中转,那个是支持 CORS 的
|