javascript - ajax能跨域post吗?
大家讲道理
大家讲道理 2017-04-10 13:09:44
[JavaScript讨论组]

因为目前的项目需要ajax跨域向另一台服务器传大量值,目前跨域ajax也只有$.getJSON的形式,GET貌似不能满足传大量数据的要求,想问一下牛人怎样ajax跨域post

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(8)
伊谢尔伦

跨域ajax浏览器的兼容性不好解决

jsonp只能GET

跨域POST从来都是可以的
构造<form>表单想action给谁都可以

跨域POST,并且想得到返回结果,需要对方服务器做一些配合

思路:
== a.com/post.html ==

<script>
function postcallback(data){
}
</script>
<form action="http://b.com/api.php" method="post" target="ifr-result"><input ....></form>
<iframe name="ifr-result"></iframe>

== a.com/ifr-callback.php ==

<?php
header('Content-type: text/javascript');
echo '<script>';
//回调原页面上函数处理返回结果
echo 'window.top.postcallback(' .$_GET['data']. ');';
echo '</script>';

== b.com/api.php ==

<?php
//....
$data = '{"ret":0,"msg":"ok"}';
// ** 让结果跳转到a.com域 **
header("Location: http://a.com/ifr-callback.php?data=".urlencode($data));
怪我咯

通过 CORS 可以跨域。比如 a.com 想 post 到 b.com 下,那么你需要在 b.com 的服务器上进行 CORS 设置,允许 a.com 跨域请求。手机码字困难,所以 CORS 具体内容请自行谷歌。

伊谢尔伦

跨域POST?其实不是很懂这个术语就是,一般表单POST什么的不就可以向非同域名的地址做POST么?如果不要返回值的话用AJAX做POST也没问题吧。

ringa_lee

能,不过如果 post 的是非表单类型的内容的话,需要进行「preflighted requests」,有点麻烦。详见 MDN: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

高洛峰

首先你的另外一台服务器需要做好CORS设置, 然后你的JS代码如下

$.ajax({
    url: a_cross_domain_url,
    crossDomain: true,
    method: "POST"
});
迷茫

easyXDM是不是可以实现?http://easyxdm.net/wp/
easyXDM is a Javascript library that enables you as a developer to easily work around the limitation set in place by the Same Origin Policy, in turn making it easy to communicate and expose javascript API’s across domain boundaries.

天蓬老师

是的,仅仅POST数据的话,form表单本来就支持跨域。
不过最新的 XMLHttpRequest2.0 有非常大的改进,其中之一就是对于跨域 ajax 的处理。

黄舟

都别闹了。

用Apache做转发(逆向代理),让跨域变成同域,这才是最好的解决方案。

原因:
1.如果不做转发,服务端与客户端js都需要改动代码,专门为跨域写很多额外的代码,增大工作量。而且不跨域时,这些代码根本就用不着。做了转发,服务端与客户端,都不需要做任何改动。

2.做转发,开发时,可以让客户端js直接访问VS、Eclipse,来调试,很方便。部署后,把转发切到IIS或Tomcat上去,做切换只是几秒钟的事情。

3.转发非常容易做,在Win上装一个wamp,然后花几分钟配置一下Apache,转发就做好了。如果不做转发,服务端与客户端要改动大量代码,太费时。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号