Ajax跨域问题的两种解决方法
浏览器不允许Ajax跨站请求,所以存在Ajax跨域问题,目前主要有两种办法解决。
1、在请求页面上使用Access-Control-Allow-Origin标头。
使用如下标头可以接受全部网站请求:
header('Access-Control-Allow-Origin:*')
使用如下标头可以接受指定网站请求:
header('Access-Control-Allow-Origin:http://www.abc.com')
所以,服务器写法:
1 2 3 | header( 'Access-Control-Allow-Origin:*' ); die ( json_encode( array ( 'msg' => 'msg....' )) ); |
ajax写法和平常一样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!DOCTYPE html> <html lang= "en" class = "" > <head>http: //i.cnblogs.com/EditPosts.aspx?opt=1 <meta charset= "utf-8" /> <title>测试</title> <script src= "http://www.ysont.cn/plugs/cookie/js/jquery-1.11.1.min.js" ></script> <body> <script> $.ajax({ url: 'http://192.168.1.124/homekoo.com/zde/cors_1.php' , dataType: 'json' , success: function (data){ alert(data.msg); } }); </script> </body> </html> |
2、使用jsonp跨域请求。
服务器:
1 2 | $data = json_encode( array ( 'msg' => 'msg....' )); die ( $_REQUEST [ 'function_name_index' ]. '(' . $data . ')' ); |
ajax请求:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <! DOCTYPE html> < html lang="en" class=""> < head > < meta charset="utf-8" /> < title >测试</ title > < script src="http://www.ysont.cn/plugs/cookie/js/jquery-1.11.1.min.js"></ script > < body > < script > $.ajax({ url:'http://192.168.1.124/homekoo.com/zde/cors_1.php', dataType:'jsonp', jsonp:'function_name_index', jsonpCallback:'function_name', success:function(data){ alert(data.msg); } }); </ script > </ body > </ html > |
在ajax请求中,使用jsonp数据格式,所以讲dataType参数设置为jsonp,平常,还加到了jsonp和jsonpCallback两个参数,结合代码,不难看出这两个参数作用:
jsonp的作用是设置服务器获取回调函数名称参数的下标参数,jsonpCallback的作用就是设置回调函数,相当于input标签中name和value,jsonp对应name,value对应jsonpCallback。
更多jsonp请求可以参考:http://www.cnblogs.com/duanhuajian/p/3152617.html,有很详细的原理介绍。
当然,对已一些简单的GET请求,平不需要回调函数处理,可以使用script、img、iframe 等html标签设置的src属性产生GET请求,这里不在讨论情况了。
作者:小熊猫小
出处:http://www.cnblogs.com/pandang/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!