ajax 在子域名下跨域的问题

2015-04-01 20:49:11 +08:00
 tanteng

有两个子域名,a.xx.com和b.xx.com,现在我在a.xx.com一个页面中发送ajax请求b.xx.com一个控制器中的方法,希望得到返回数据,但是返回状态302,应该是跨域问题没有解决。

网上有很多方法解决子域名跨域,但比较杂乱,说说一般常见的专业做法是怎样的,谢谢!

8786 次点击
所在节点    JavaScript
32 条回复
jokester
2015-04-01 20:56:17 +08:00
302为什么"应该是跨域问题没有解决"
能不能讲一下你的思路
jasonslyvia
2015-04-01 21:01:53 +08:00
b.xx.com 中添加 Access-Control-Allow-Origin: a.xx.com 即可,详细的请查相关文档。
Ison
2015-04-01 21:15:26 +08:00
jquery的jsonp可以解决跨域问题
lz可以自己查一下
tanteng
2015-04-01 21:16:25 +08:00
@jokester 在b.xx.com的页面请求b.xx.com的方法返回是正常的,状态200,同样的js代码在a.xx.com请求返回状态302,被跳转。
airyland
2015-04-01 21:39:26 +08:00
明显LZ应该先解决b站服务端对于非同域请求返回302的问题。这跟ajax无关了。
tanteng
2015-04-01 22:20:38 +08:00
@airyland 解决了跨域也就解决了302,302就是非法请求跳转了
iyaozhen
2015-04-01 22:25:17 +08:00
@tanteng a.xx.com 请求 b.xx.com 就是跨域了。
所以根源就是跨域问题。上面已经有人告诉你方法了:
jsonp 或 设置 Access-Control-Allow-Origin
lk09364
2015-04-01 22:28:06 +08:00
@tanteng 你在哪里的文档看到 302 是『非法请求』……
anewg
2015-04-01 22:44:12 +08:00
302原来叫非法请求跳转。。长见识了
tanteng
2015-04-01 23:19:23 +08:00
@lk09364
@anewg
请问我有讲302是非法请求跳转吗,请理解别人说话的意思,表达不严谨请见谅!发现在v2ex上很多人真的是不对问题进行讲解,却擅长喷人。
tanteng
2015-04-01 23:21:30 +08:00
这个问题就是讨论ajax跨域如何解决的问题,还是用jsonp吧。http://www.tantengvip.com/2015/04/jsonp-ajax/
tanteng
2015-04-01 23:23:46 +08:00
@anewg
@lk09364
请理解我回复的意思,请求ajax用firefox查看不成功,状态码302,location:其他一个网址。正常的情况是返回状态200,并且显示字节长度等。
belin520
2015-04-01 23:52:51 +08:00
@tanteng jsonp不支持post,最理想的还是后端开域名白名单
FrankFang128
2015-04-01 23:57:17 +08:00
302就不是跨域了
lk09364
2015-04-01 23:59:50 +08:00
@tanteng 也许我的文字表达能力薄,导致你对我的留言有所误解,在此先道个歉。
我很久之前也处理过类近的问题,而浏览器只是直接返回错误(具体的忘记了),并没有出现 302 。

据我记忆,302 是伺服器端返回的,而使用AJAX 技术的话302 会被浏览器无视的(除了使用 Access-Control-Origin 外)[0]。如果伺服器返回 302 的话,这问题大概和客户端无关。我从而推断出你有可能在伺服器端使用了一个特殊程序,在遇到错误的跨站请求时会返回 302 。因此我想问问你伺服器端是不是自己写的代码,如果不是的话那是不是在文档里看到『非法请求跳转』这一字串。因为对于一个API 产品/服务来说,这个是常见问题,估计文档会直接给出方法。

既然场景可以使用 jsonp 的话那就再好不过了,我的场景使用POST,所以不行。

[0]: http://blog.dzhuvinov.com/?p=979
anewg
2015-04-02 00:23:52 +08:00
@tanteng 那你教教我怎么理解你6楼的回复?浏览器跨域限制跟server返回什么状态码压根就没有直接关系。搞清这两个概念再下结论也不迟不是?
falcon05
2015-04-02 03:17:07 +08:00
我也根本没有看出是跨域问题,估计是服务端根据referer, cookie ,session之类的判断跳转了
xz
2015-04-02 07:23:51 +08:00
看到6楼跟10我竟然笑了
airyland
2015-04-02 08:35:39 +08:00
我觉得大家还是散了吧。LZ玻璃心又觉得我们理解不对。
des
2015-04-02 08:56:05 +08:00
@tanteng 你六楼有讲,谢谢

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

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

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

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

© 2021 V2EX