js跨域post提交大量数量,如何实现。

craboy1 2013-07-01 02:32:03
做了一个评论系统,原则上只调用一段js就显示出完整的评论模块,但提交数据时遇到了跨库的问题。http://www.jicheke.com/a_test.html,这个多说评论系统。它是能实现的,请在大侠指点。
...全文
2321 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aaron_0104 2013-12-16
  • 打赏
  • 举报
回复
引用 14 楼 craboy1 的回复:
360就是一坨屎,简直就是js开发人员人恶梦。360你他妈早点去死。你现在在心里跟苍蝇差不多。弄不死你我心里就不舒服。做的什么产品。你和QQ根本就没法比。
顺便赞下。。。。 想问下楼主解决跨域问题了吗,分享下
hch126163 2013-07-03
  • 打赏
  • 举报
回复
跨越只能 get 不能 post 先post到自己服务器端,再处理
craboy1 2013-07-03
  • 打赏
  • 举报
回复
360就是一坨屎,简直就是js开发人员人恶梦。360你他妈早点去死。你现在在心里跟苍蝇差不多。弄不死你我心里就不舒服。做的什么产品。你和QQ根本就没法比。
雾海树妖 2013-07-02
  • 打赏
  • 举报
回复
直接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访问的
  • 打赏
  • 举报
回复
数据量多大?太大了,干脆存一个xml文件,然后给url,让对面访问这个xml文件好了
Go 旅城通票 2013-07-02
  • 打赏
  • 举报
回复
自己做代理就行了,将你的信息提交到代理页面,然后代理页面负责post数据到跨域的页面
craboy1 2013-07-02
  • 打赏
  • 举报
回复
太难搞了,上边那个例子不是用iframe实现的,而且使用iframe之后,发表后交互也实现不了。显示效果也就实现不了。要了命了。
craboy1 2013-07-02
  • 打赏
  • 举报
回复
引用 10 楼 atfuck 的回复:
[quote=引用 7 楼 craboy1 的回复:] [quote=引用 5 楼 atfuck 的回复:] 直接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访问的
function sendPost(){
  var postStr, ifrm;
  postStr = document.getElementById('ps_cmt').innerHTML;
  ifrm = document.createElement("iframe");
  ifrm.setAttribute("id",'commentFrm');
  ifrm.src='about:blank';
  ifrm.setAttribute("frameborder","0");
  ifrm.setAttribute("name",'commentFrm');
  ifrm.contentDocument.write('<form method="POST" action="http://my.domain.com/request.php"><textarea name="txtData">'+postStr+'</textarea></form>');
  ifrm.contentDocument.forms[0].submit();
}
function sendPost(){ var postStr, ifrm; postStr = document.getElementById('ps_cmt').innerHTML; ifrm = document.createElement("iframe"); ifrm.setAttribute("id",'commentFrm'); ifrm.src='about:blank'; ifrm.setAttribute("frameborder","0"); ifrm.setAttribute("name",'commentFrm'); ifrm.contentDocument.write('<form method="POST" action="http://my.domain.com/request.php"><textarea name="txtData">'+postStr+'</textarea></form>'); ifrm.contentDocument.forms[0].submit(); } 写了一个,报错了TypeError: ifrm.contentDocument is null,估计iframe也有跨域说明。[/quote] 。。。忘了说了。。。contentDocument是webkit特有的iframe获取document接口,ie直接用document就可以了。这个报错明显不是跨域问题。。。[/quote]

$(window.frames["iframe1"].document).find("#testid").val(obj.areaData);
		alert($(window.frames["iframe1"].document).find("#testid").val());
		$(window.frames["iframe1"].document).find("#form2").submit();
我是这么使用的,submit不好使。alert是可以获得数据的。
雾海树妖 2013-07-02
  • 打赏
  • 举报
回复
引用 7 楼 craboy1 的回复:
[quote=引用 5 楼 atfuck 的回复:] 直接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访问的
function sendPost(){
  var postStr, ifrm;
  postStr = document.getElementById('ps_cmt').innerHTML;
  ifrm = document.createElement("iframe");
  ifrm.setAttribute("id",'commentFrm');
  ifrm.src='about:blank';
  ifrm.setAttribute("frameborder","0");
  ifrm.setAttribute("name",'commentFrm');
  ifrm.contentDocument.write('<form method="POST" action="http://my.domain.com/request.php"><textarea name="txtData">'+postStr+'</textarea></form>');
  ifrm.contentDocument.forms[0].submit();
}
function sendPost(){ var postStr, ifrm; postStr = document.getElementById('ps_cmt').innerHTML; ifrm = document.createElement("iframe"); ifrm.setAttribute("id",'commentFrm'); ifrm.src='about:blank'; ifrm.setAttribute("frameborder","0"); ifrm.setAttribute("name",'commentFrm'); ifrm.contentDocument.write('<form method="POST" action="http://my.domain.com/request.php"><textarea name="txtData">'+postStr+'</textarea></form>'); ifrm.contentDocument.forms[0].submit(); } 写了一个,报错了TypeError: ifrm.contentDocument is null,估计iframe也有跨域说明。[/quote] 。。。忘了说了。。。contentDocument是webkit特有的iframe获取document接口,ie直接用document就可以了。这个报错明显不是跨域问题。。。
Go 旅城通票 2013-07-02
  • 打赏
  • 举报
回复
引用 6 楼 craboy1 的回复:
[quote=引用 3 楼 showbo 的回复:] 自己做代理就行了,将你的信息提交到代理页面,然后代理页面负责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实现的。这样就不符合要求了。[/quote] 加载数据基本没有域名限制,主要是提交数据时别人的站点。。 不用后续的控制可以采用iframe,如果有后续的操作,如根据返回值进行某些操作iframe跨域不行 可以用ajax,动态页设置Access-Control-Allow-Origin响应头为“*”,任何域名发送的ajax都可以请求这个动态页。不过IE7-浏览器无法请求,即使设置了这个响应头,ie8+要使用XDomainRequest这个对象,而不是acx或者XMLHttpRequest。 参考:access-Control-Allow-Origin跨域请求安全隐患 所以兼容性好只能a.com做代理请求你的ping.com
craboy1 2013-07-02
  • 打赏
  • 举报
回复
引用 4 楼 kimizhou_blog 的回复:
数据量多大?太大了,干脆存一个xml文件,然后给url,让对面访问这个xml文件好了
现在是跨域问题呀。头大呀!
craboy1 2013-07-02
  • 打赏
  • 举报
回复
引用 5 楼 atfuck 的回复:
直接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访问的
function sendPost(){
  var postStr, ifrm;
  postStr = document.getElementById('ps_cmt').innerHTML;
  ifrm = document.createElement("iframe");
  ifrm.setAttribute("id",'commentFrm');
  ifrm.src='about:blank';
  ifrm.setAttribute("frameborder","0");
  ifrm.setAttribute("name",'commentFrm');
  ifrm.contentDocument.write('<form method="POST" action="http://my.domain.com/request.php"><textarea name="txtData">'+postStr+'</textarea></form>');
  ifrm.contentDocument.forms[0].submit();
}
function sendPost(){ var postStr, ifrm; postStr = document.getElementById('ps_cmt').innerHTML; ifrm = document.createElement("iframe"); ifrm.setAttribute("id",'commentFrm'); ifrm.src='about:blank'; ifrm.setAttribute("frameborder","0"); ifrm.setAttribute("name",'commentFrm'); ifrm.contentDocument.write('<form method="POST" action="http://my.domain.com/request.php"><textarea name="txtData">'+postStr+'</textarea></form>'); ifrm.contentDocument.forms[0].submit(); } 写了一个,报错了TypeError: ifrm.contentDocument is null,估计iframe也有跨域说明。
craboy1 2013-07-02
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
自己做代理就行了,将你的信息提交到代理页面,然后代理页面负责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实现的。这样就不符合要求了。
潮起潮落 2013-07-01
  • 打赏
  • 举报
回复
如果你的提交地址B和调用地址A处于一个顶级域下,可以这样解决。 在B域下创建一个供别的页面iframe调用的页面,这里面可以只有JS函数供引用页面(父页面)调用。然后在调用页面和被调用页面都写一段JS代码(建议写在最开始处):document.domain = "顶级域名"; 之后在调用页面就可以操作iframe了(可以给iframe一个ID),ID.函数(数据);然后在函数处理中使用AJAX-POST数据到B页面所在的域。 如果不在一个顶级域下,只能把所有需要操作显示的部分都弄到一个iframe里面在别处引用。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧