AJAX要实现跨域HTTP GET/POST本身就是很麻烦的,具体方法就不详细说了.
我是比较懒的人,只要实现功能就好,我平时最常用的是用PHP的file_get_contents,把远程的HTTP直接get到本地的php,这样就不存在跨域的问题了.不过这个方法就不是很全面的,一方面速度比较慢,中转了一次.另一方面file_get_contents只支持标准的HTTP.最近我就遇到一个情况了,对方是用ipworks写的一个简单80端口的输出.没有完整的HTTP HEADER.用file_get_contents就一直报错.后来改用curl就正常了,还是curl功能强大点.当然我这个方法只能用作简单的HTTP GET.
ajax.php代码节选
1 2 3 4 5 6 7 8 9 10 11 12 13 | if($_GET['action'] == "geturl"){ $url = trim($_GET['url']); //$content = file_get_contents($url,"r"); $ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $content = curl_exec($ch); curl_close($ch); echo $content; exit; } |
js部分代码,当然是用jquery的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function ajaxopen(url){ $.ajax({ url: 'cam.php?action=geturl&url='+url,//通过php获取远程信息,解决ajax跨域问题 cache: false, type:"get", async:false, success: function(str){ //alert('成功了:'+str); }, error: function(str){ alert('读取错误'); } }); } |
另外前些天看到张宴有出了一个小作品:
AJAXCDR:利用 Flash 完美解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求
简单来说就是用flash来做中转,不过对方服务器需要有crossdomain.xml. 可以POST大量数据,也是不错的解决方案.速度也应该比file_get_contents快.
相关日志
4 条评论了已经
Trackbacks/Pingbacks.
发表评论
字体为 粗体 是必填项目,邮箱地址 永远不会 公布。
允许部分 HTML 代码:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URLs(网站链接)必须完整有效 (比如: http://www.vpnall.com),所有标签都必须完整的关闭。
超出部分系统将会自动分段及换行。
请保证评论内容是与日志或 Blog 内容相关的,灌水、攻击性或不恰当的评论 可能 会被编辑或删除。
请问如果用代理 ~怎样跨域post~上面的只能get
对,只能get
请问您可以新增post 跨域的功能吗? 拜托您了..
我是有找到类似的,不过他写的有问题.而且GET 和 post 部分网站无法开启.
http://hi.baidu.com/comdeng/blog/item/ced81b08ca4d95d563d98606.html
建议你看看curl的用法.他支持post