首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

js跨域post提交大量数量,怎么实现

2013-07-11 
js跨域post提交大量数量,如何实现。做了一个评论系统,原则上只调用一段js就显示出完整的评论模块,但提交数

js跨域post提交大量数量,如何实现。
做了一个评论系统,原则上只调用一段js就显示出完整的评论模块,但提交数据时遇到了跨库的问题。http://www.jicheke.com/a_test.html,这个多说评论系统。它是能实现的,请在大侠指点。

[解决办法]
如果你的提交地址B和调用地址A处于一个顶级域下,可以这样解决。
在B域下创建一个供别的页面iframe调用的页面,这里面可以只有JS函数供引用页面(父页面)调用。然后在调用页面和被调用页面都写一段JS代码(建议写在最开始处):document.domain = "顶级域名";
之后在调用页面就可以操作iframe了(可以给iframe一个ID),ID.函数(数据);然后在函数处理中使用AJAX-POST数据到B页面所在的域。

如果不在一个顶级域下,只能把所有需要操作显示的部分都弄到一个iframe里面在别处引用。
[解决办法]
自己做代理就行了,将你的信息提交到代理页面,然后代理页面负责post数据到跨域的页面
[解决办法]
数据量多大?太大了,干脆存一个xml文件,然后给url,让对面访问这个xml文件好了
[解决办法]
直接js不行,需要借助iframe。。

function xssPost(url,arg,postStr){
  var de;
  de=document.body.appendChild(document.createElement('iframe'));
  de.src='about:blank';
  de.contentDocument.write('<form method="POST" action="'+url+'"><textarea name="'+arg+'">'+postStr+'</textarea></form>');
  de.contentDocument.forms[0].submit();
}
//xssPost('http://xxx.xxx.xxx/a.php','val','xxxxxxxxx');
//相当于提交http://xxx.xxx.xxx/a.php?val=xxxxxxxxx,只不过是POST访问的
[解决办法]

引用:
Quote: 引用:

自己做代理就行了,将你的信息提交到代理页面,然后代理页面负责post数据到跨域的页面

如果访问代理的域名那我的需求就实现了

如果www.a.com要使用我的评论系统,那么我只要给它一段js代码放在www.a.com页面里就行了。
js代码:

<div id="ps_comment"></div>
<script type="text/javascript">
var comment_conf = {app_id:"1212"};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = 'http://www.ping.com/api/comment.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0] 

[解决办法]
 document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>




而评论的数据都是www.ping.com域名上的, 所以www.a.com页面中的js需要向www.ping.com提交数据。使用代理是在www.a.com实现的。这样就不符合要求了。

加载数据基本没有域名限制,主要是提交数据时别人的站点。。
不用后续的控制可以采用iframe,如果有后续的操作,如根据返回值进行某些操作iframe跨域不行

可以用ajax,动态页设置Access-Control-Allow-Origin响应头为“*”,任何域名发送的ajax都可以请求这个动态页。不过IE7-浏览器无法请求,即使设置了这个响应头,ie8+要使用XDomainRequest这个对象,而不是acx或者XMLHttpRequest。

参考:access-Control-Allow-Origin跨域请求安全隐患

所以兼容性好只能a.com做代理请求你的ping.com
[解决办法]
跨越只能 get 不能 post

先post到自己服务器端,再处理

热点排行