post 跨域问题。这次我绕不开了

2014-06-14 19:57:20 +08:00
 yangkeao
想要使用多说的api,好像发表评论必须要post

这就面临跨域问题。

多说给的通用代码是如何解决这个问题的?我应该怎么办?


同步异步都可以,这个没关系。
7296 次点击
所在节点    问与答
31 条回复
cbsw
2014-06-14 20:28:51 +08:00
用多说不就调用给的那段脚本就行了吗,站点静态的都行,应该不需要自己处理跨域问题
yangkeao
2014-06-14 20:39:04 +08:00
@cbsw 那段脚本使用时限制多多(比如不支持匿名评论),,想要自己写个,怎么处理?

而且想知道那个脚本是怎么跨域的。
cbsw
2014-06-14 20:47:50 +08:00
@yangkeao 这里不就可以匿名吗 http://dev.duoshuo.com/threads/51ef7387d137f48920000084 话说你是要自己写一个多说吗?
yangkeao
2014-06-14 20:50:57 +08:00
@cbsw 难道API里面的匿名评论指的是 可以随便打个名字??
还以为可以不输入名字。。。

尝试着用给的脚本,绕过本地对于输入名字的验证后提交,Bad Request。
所以我什么都懂了。。。。

那就算了吧。(我只是想用他的API,没有自己写一个的意思。)
yangkeao
2014-06-14 20:51:19 +08:00
@cbsw 那请问他的跨域是如何实现的呢?
cbsw
2014-06-14 20:56:49 +08:00
@yangkeao 匿名评论本身就会带来很大的问题:垃圾信息。一般的网站好像不会需要完全匿名不受限制的评论吧
yangkeao
2014-06-14 21:02:28 +08:00
@cbsw 嗯,好的。

官方脚本的跨域如何实现的呢?
cbsw
2014-06-14 21:26:22 +08:00
你是在用 django 吗,我曾经也对 django 的跨域问题比较纠结,规定表单 post 一定要加 csrf_token ,不过似乎可以通过 ajax 提交表单来绕开 django 对 post 表单的检查
ysdj
2014-06-14 23:18:40 +08:00
在服务端调用API啊
belin520
2014-06-14 23:20:50 +08:00
@ysdj 对,自己的服务器做一次中转
txlty
2014-06-14 23:25:23 +08:00
抓包看了一下,跨域的秘密就在这里:


多说API接口返回的HTTP头信息里允许跨域读取。
Access-Control-Allow-Origin 表示允许哪个域读取信息。这个是添加站点时指定的。
yangkeao
2014-06-14 23:31:53 +08:00
@txlty cors吗?为什么我访问提示没有标记??
txlty
2014-06-14 23:32:57 +08:00
每个多说域名对应一个允许的站点域。

所以,调用API时调用添加站点时设置的多说域名,比如:
http://[你设置的多说域名].duoshuo.com/posts/create.json
而不是
http://api.duoshuo.com/posts/create.json
yangkeao
2014-06-14 23:34:33 +08:00
@txlty XMLHttpRequest cannot load http://api.duoshuo.com/posts/create.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
yangkeao
2014-06-14 23:37:27 +08:00
@txlty 哦!!
那这样不方便测试呃。。。
simonyan
2014-06-14 23:41:29 +08:00
yangkeao
2014-06-14 23:51:18 +08:00
@txlty XMLHttpRequest cannot load http://videa.duoshuo.com/posts/create.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://idea.vdon.cn' is therefore not allowed access.

允许的站点域是设置里面的首页网址吗?
txlty
2014-06-15 00:46:14 +08:00
@yangkeao
试了一下,换域也可以。那就是读取的post请求时的referer。
读取不到,可能是你提交的参数错了,返回404了。
emric
2014-06-15 03:11:26 +08:00
//api.duoshuo.com/posts/create.jsonp
使用 jsonp, 详见文档~
yangkeao
2014-06-15 08:35:25 +08:00
@emric POST

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

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

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

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

© 2021 V2EX