有两个子域名,a.xx.com和b.xx.com,现在我在a.xx.com一个页面中发送ajax请求b.xx.com一个控制器中的方法,希望得到返回数据,但是返回状态302,应该是跨域问题没有解决。
网上有很多方法解决子域名跨域,但比较杂乱,说说一般常见的专业做法是怎样的,谢谢!
1
jokester 2015 年 4 月 1 日
302为什么"应该是跨域问题没有解决"
能不能讲一下你的思路 |
2
jasonslyvia 2015 年 4 月 1 日
|
3
Ison 2015 年 4 月 1 日
jquery的jsonp可以解决跨域问题
lz可以自己查一下 |
4
tanteng OP @jokester 在b.xx.com的页面请求b.xx.com的方法返回是正常的,状态200,同样的js代码在a.xx.com请求返回状态302,被跳转。
|
5
airyland 2015 年 4 月 1 日
明显LZ应该先解决b站服务端对于非同域请求返回302的问题。这跟ajax无关了。
|
7
iyaozhen 2015 年 4 月 1 日
|
9
anewg 2015 年 4 月 1 日
302原来叫非法请求跳转。。长见识了
|
10
tanteng OP |
11
tanteng OP 这个问题就是讨论ajax跨域如何解决的问题,还是用jsonp吧。http://www.tantengvip.com/2015/04/jsonp-ajax/
|
12
tanteng OP |
14
FrankFang128 2015 年 4 月 1 日 via Android
302就不是跨域了
|
15
lk09364 2015 年 4 月 1 日
@tanteng 也许我的文字表达能力薄,导致你对我的留言有所误解,在此先道个歉。
我很久之前也处理过类近的问题,而浏览器只是直接返回错误(具体的忘记了),并没有出现 302 。 据我记忆,302 是伺服器端返回的,而使用AJAX 技术的话302 会被浏览器无视的(除了使用 Access-Control-Origin 外)[0]。如果伺服器返回 302 的话,这问题大概和客户端无关。我从而推断出你有可能在伺服器端使用了一个特殊程序,在遇到错误的跨站请求时会返回 302 。因此我想问问你伺服器端是不是自己写的代码,如果不是的话那是不是在文档里看到『非法请求跳转』这一字串。因为对于一个API 产品/服务来说,这个是常见问题,估计文档会直接给出方法。 既然场景可以使用 jsonp 的话那就再好不过了,我的场景使用POST,所以不行。 [0]: http://blog.dzhuvinov.com/?p=979 |
17
GG668v26Fd55CP5W 2015 年 4 月 2 日 via iPhone
我也根本没有看出是跨域问题,估计是服务端根据referer, cookie ,session之类的判断跳转了
|
18
xz 2015 年 4 月 2 日 via Android
看到6楼跟10我竟然笑了
|
19
airyland 2015 年 4 月 2 日
我觉得大家还是散了吧。LZ玻璃心又觉得我们理解不对。
|
21
TimLang 2015 年 4 月 2 日
以前跨域都是jsonp或iframe,现在解决方案成熟很多,你可以搜一下“Angular通过CORS实现跨域方案”
|
22
lincanbin 2015 年 4 月 2 日 via Android
302不是跨域问题,是跳转。
你关了Chrome默认的安全设置再试试就知道了。 想必是你目标网站的Apache之类服务做了放盗链,你想要盗链,Header中要附上Refer |
23
NewYear 2015 年 4 月 2 日
其实是误会 为什么是误会 我给你们说
楼主的意思是 服务器判断了,非法请求返回302,所以返回302在这个情况下是非法的 楼下的意思是 302状态码原来是代表非法? 楼主也请你说明白,跨域有两种情况,一种是去请求自己的资源,自己有服务器掌控权,两边都有。这种情况解决方法蛮多的,比如用flash中转,比如上面说的在包头加个参数。 一种是拿别人的数据,别人要求你按指定的方式可以拿到数据,对方也可能只让自己的网站拿数据,非自己网站,直接不给你数据。而你却想要它的数据……就一般而言,这个方法也蛮多的,你如果有搜索的话,一定会知道的,那就是拿自己服务器来中转请求。 浏览器对跨域问题还是很严肃的,因为不严肃的话会涉及到安全问题,所以不管是哪一年,都会有无数人抛出这个问题……“如何通过js获取对方网站数据”“如何跨域”等等。 好了,我给你们排解了误会,也解答了你的问题。给分吧 |
25
tonyleen 2015 年 4 月 2 日
|
26
tonyleen 2015 年 4 月 2 日
|
27
learnshare 2015 年 4 月 2 日
JSONP 是一个不太好的解决方案,设置 Access-Control-Allow-Origin 才对。
|
28
wuxqing 2015 年 4 月 2 日
@learnshare
Access-Control-Allow-Origin不支持ie8及以下版本 |
29
learnshare 2015 年 4 月 3 日
@wuxqing 抱歉,IE10-
|
30
tanteng OP |
31
tanteng OP 我现在已经解决了这个问题,方法是把b.xx.com的请求代码复制到了a.xx.com,不然要改很多js代码
|
32
FrankFang128 2015 年 4 月 3 日
|