ajax 在子域名下跨域的问题

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

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

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

8951 次点击
所在节点    JavaScript
32 条回复
TimLang
2015-04-02 09:31:01 +08:00
以前跨域都是jsonp或iframe,现在解决方案成熟很多,你可以搜一下“Angular通过CORS实现跨域方案”
lincanbin
2015-04-02 09:31:02 +08:00
302不是跨域问题,是跳转。
你关了Chrome默认的安全设置再试试就知道了。
想必是你目标网站的Apache之类服务做了放盗链,你想要盗链,Header中要附上Refer
NewYear
2015-04-02 10:47:13 +08:00
其实是误会 为什么是误会 我给你们说

楼主的意思是 服务器判断了,非法请求返回302,所以返回302在这个情况下是非法的

楼下的意思是 302状态码原来是代表非法?

楼主也请你说明白,跨域有两种情况,一种是去请求自己的资源,自己有服务器掌控权,两边都有。这种情况解决方法蛮多的,比如用flash中转,比如上面说的在包头加个参数。

一种是拿别人的数据,别人要求你按指定的方式可以拿到数据,对方也可能只让自己的网站拿数据,非自己网站,直接不给你数据。而你却想要它的数据……就一般而言,这个方法也蛮多的,你如果有搜索的话,一定会知道的,那就是拿自己服务器来中转请求。

浏览器对跨域问题还是很严肃的,因为不严肃的话会涉及到安全问题,所以不管是哪一年,都会有无数人抛出这个问题……“如何通过js获取对方网站数据”“如何跨域”等等。

好了,我给你们排解了误会,也解答了你的问题。给分吧
niko
2015-04-02 11:10:28 +08:00
@Ison jsonp只能get
tonyleen
2015-04-02 11:32:01 +08:00
tonyleen
2015-04-02 11:32:37 +08:00
learnshare
2015-04-02 12:13:44 +08:00
JSONP 是一个不太好的解决方案,设置 Access-Control-Allow-Origin 才对。
wuxqing
2015-04-02 19:37:28 +08:00
@learnshare
Access-Control-Allow-Origin不支持ie8及以下版本
learnshare
2015-04-03 10:06:45 +08:00
@wuxqing 抱歉,IE10-
tanteng
2015-04-03 11:28:55 +08:00
@FrankFang128
@NewYear
@lincanbin
@airyland
@xz
@anewg
我没理解清楚,返回了302,就是说跨域请求成功了吗,只是请求被判断为非法请求,没有返回期望的数据而是直接跳转了。能不能这么理解?

另外,a.xx.com请求b.xx.com是不是有跨域问题?
tanteng
2015-04-03 11:29:53 +08:00
我现在已经解决了这个问题,方法是把b.xx.com的请求代码复制到了a.xx.com,不然要改很多js代码
FrankFang128
2015-04-03 12:29:38 +08:00
@tanteng 是跨域,但满足下面任意一条时就可以请求
1. a.xx.comb.xx.com 均降域
2. 使用了 CORS 协议

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

https://tanronggui.xyz/t/180957

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

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

© 2021 V2EX