为了账号安全,请及时绑定邮箱和手机立即绑定

如下,所以我该怎么用ajax跨域POST数据呢?

如下,所以我该怎么用ajax跨域POST数据呢?

烙印99 2023-05-01 14:10:29
我在js中用xmlhttprequest对象向node.js服务端发送POST请求,数据全部是json格式,但是因为前端和服务端没部署到一个域下,结果访问前端的时候就提示is not allowed by Access-Control-Allow-Origin……
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

一般是用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>


查看完整回答
反对 回复 2023-05-03
?
翻阅古今

TA贡献1780条经验 获得超5个赞

我做过这样的jsonp 很简单的 服务器返回的js本插入到头部
补充下服务器端 以java 为例子
struts.xml 代码

<action name="xx" class="xxx" method="xxxx">
<result name="success" type="json">
<param name="callbackParameter">callback</param> <!-- callback 可以是自己定义的请求参数-->
</result>
</action>

这样就Ok了


查看完整回答
反对 回复 2023-05-03
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信