为啥我请求 V2EX 提供的 API 报跨域了,你们也这样吗?

2018-03-16 17:46:42 +08:00
 zzl
Failed to load https://www.v2ex.com/api/topics/hot.json: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 405.
4379 次点击
所在节点    V2EX
12 条回复
airyland
2018-03-16 17:55:57 +08:00
先 google 下相关知识,V2EX 并没有设置(也不可能)规则为 * 的 cors 规则,也没有提供 jsonp 接口,所以跨域错误是正常的。接口使用后端语言访问吧或者做一层代理。
MaiCong
2018-03-16 17:58:14 +08:00
浏览器端直接访问是会出现跨域提示的,这种时候就得使用后端的骚操作了
daishankeke
2018-03-16 18:00:50 +08:00
1L 说得对
xiaoz
2018-03-16 23:41:23 +08:00
建议用 curl 来请求接口,就不会出现跨域问题。
xiaoz
2018-03-16 23:42:02 +08:00
49gd
2018-03-17 09:54:23 +08:00
反代 在访问不就好了
zzl
2018-03-17 11:57:38 +08:00
@airyland 好吧,其实我在学 react,想仿个 v 站,用 axios 请求 v 站的 api 接口,结果就这样
zzl
2018-03-17 12:00:14 +08:00
@MaiCong 用 chrome 打开不会报错,本地用 axios 请求就报错了,不知道是哪里的设置问题,还是只能用后端来操作。同样的代码,使用 cnode 的公共 api 就没有问题
zzl
2018-03-17 12:01:42 +08:00
@49gd 只想用 react 仿一下 v 站,用 axios 发的请求,不想写后端,只能加个代理吗
HowardTang
2018-03-17 12:29:10 +08:00
nginx 反代一下..很简单的
xiongshengyao
2018-03-21 14:43:42 +08:00
nginx 做一下反向代理,恰好我以前写写过类似的,直接给你把 nginx 配置贴出来吧
```
server {
listen 8082;

root /home/xsy/react-v2ex/dist;
index index.html;

location /api {
proxy_set_header Host www.v2ex.com;
proxy_pass https://www.v2ex.com;
proxy_buffers 16 4k;
}

location / {
try_files $uri $uri/ /index.html;
}
}
```
xiongshengyao
2018-03-21 14:44:35 +08:00

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

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

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

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

© 2021 V2EX