您好,匿名用户
随意问技术百科期待您的加入

用ajax怎么解决跨域的问题?

+1 投票

我在js中用xmlhttprequest对象向node.js服务端发送POST请求,数据全部是json格式,但是因为前端和服务端没部署到一个域下,结果访问前端的时候就提示is not allowed by Access-Control-Allow-Origin……所以怎么用ajax跨域POST数据呢?

用户头像 提问 2013年 4月10日 @ mongodb 上等兵 (152 威望)
分享到:

1个回答

+1 投票
 
最佳答案

一般是用jsonp,原理很简单,比如你在A域名请求B域名:

1. 在A域名的页面中使用script标签src写成B域名中服务器的URL
script标签是可以跨域的,比如你调用Google Map或Google Analytics时引入的js就是google域名下的。

2. 后端程序在最后需要把一段js代码的字符串print出来,这样就可以运行A域名js中写好的callback方法,将要返回的数据放入参数就可以了

A域名中的js文件:

<script type="text/javascript" src="http://www.b.com/action?callback=myCallback"></script>
<script type="text/javascript">
    function myCallback (data) {
        alert(data);
    }
</script>

B域名中服务器

String cb = get('callback');
Int b = 'return data';
print('<script type="text/javascript"> ' + cb + '(' + b + '); </script>');

后端print数据到页面中后就会这样

<script type="text/javascript">
    myCallback('return data');
</script>
用户头像 回复 2013年 4月10日 @ Dante 上等兵 (290 威望)
选中 2013年 4月13日 @苏尐沫
提一个问题:

相关问题

0 投票
1 回复 36 阅读
用户头像 提问 2012年 12月1日 @ Riven 上等兵 (334 威望)
0 投票
1 回复 62 阅读
用户头像 提问 2012年 12月1日 @ Aphrodite 上等兵 (185 威望)
0 投票
0 回复 35 阅读
+1 投票
1 回复 101 阅读
用户头像 提问 2013年 9月10日 @ Malphite 上等兵 (306 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...