ajax请求跨域问题
ajax跨域,这个是面试的时候常被问到,也是在做项目的时候会遇到的问题,在之前的项目中就有遇到过,这里根据经验写了三种分享下
1.使用中间层过渡的方式
简单来说就是"后台代理",把跨域请求交给后台去执行,然后在前端用ajax访问后台获取数据便可,这种比较简单,就不多说了。
2.使用script标签
对于 script 来讲,没有所谓的跨域限制,所以一般可以用来实现跨域请求,请求方式(这里用jquery,也可以直接用<script>标签)
$(function () { $.getScript("http://localhost:14412/ajaxTest.aspx", function () { alert(responseVal); }) })
后台对应代码
public partial class ajaxTest : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("var responseVal='Dylan'"); } }
3.使用"jsonp"来实现
jsonp方式其实就是在url后面多加一个callback=?的参数,这里给大家看下前端的调用方式:
使用$.getJSON来实现
$(function () { $.getJSON("http://localhost:14412/ajaxTest.aspx?callback=?", function (data) { alert(data.name); }); })
要注意的是在url的后面必须添加一个callback参数,这样getJSON方法才会知道是用JSONP方式去访问服务,callback后面的那个问号是内部自动生成的一个回调函数名
使用$.ajax来实现
<script type="text/javascript"> $.ajax({ url:"http://localhost:14412/ajaxTest.aspx?callback=?", dataType:"jsonp", jsonpCallback:"my_callback", success:function(data){ alert(data.name + " is a a" + data.sex); } }); </script>
这里jsonpCallback就是可以指定我们自己的回调方法名my_callback,远程服务接受callback参数的值就不再是自动生成的回调名,而是my_callback。dataType是指定按照JSOPN方式访问远程服务。
后台对应代码:
public partial class ajaxTest : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //获取回调函数名 string callback = Request.QueryString["callback"]; //json数据 string json = "{\"name\":\"chopper\",\"sex\":\"man\"}"; Response.ContentType = "application/json"; //输出:回调函数名(json数据) Response.Write(callback + "(" + json + ")"); } }
好了,大概就这三种了。希望朋友们批评指正,也希望有其他更好的一起分享下。
如果你觉得本文对你有帮助,可以在右边随意 打赏 博主 ~\(≧▽≦)/~
喜欢的朋友,下面点个关注,点个赞,O(∩_∩)O哈哈~~~~
作者:最爱晴天出处:http://www.cnblogs.com/qtqq/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追 究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?