用ajax怎么解决跨域的问题?
我在js中用xmlhttprequest对象向node.js服务端发送POST请求,数据全部是json格式,但是因为前端和服务端没部署到一个域下,结果访问前端的时候就提示is not allowed by Access-Control-Allow-Origin……所以怎么用ajax跨域POST数据呢?
疯狂的椰子
11 years, 8 months ago
Answers
一般是用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>
天、使→恶,魔
answered 11 years, 8 months ago