AjaxUpload跨域上传问题
1. 调用上传的html页面所在域名是 www.abc.com ,添加document.domain
<script>
document.domain = "abc.com";
</script>
AjaxUpload 设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | $( function () { // 创建一个上传参数 var uploadOption0 = { // 提交目标 action: "http://upload.abc.com/FileUpload/Upload" , // input file id,name id: "file_0" , name: "file_0" , responseType: false , // "json", // 自动提交 autoSubmit: true , // 选择文件之后… onChange: function (file, extension) { if (! new RegExp(/(jpg)|(jpeg)|(bmp)|(gif)|(png)/i).test(extension)) { layer.msg( "只限上传图片文件,请重新选择!" ); } }, // 开始上传文件 onSubmit: function (file, extension) { layer.msg( "正在上传文件:" + file + "..." ); }, // 上传完成之后 onComplete: function (file, responseText) { var response = eval( "(" + responseText + ")" ); layer.msg(response.message); if (response.success) { $( "#file0_name" ).val(response.data.name); $( "#file0_upload_name" ).val(response.data.upload_name); $( "#file0_extension" ).val(response.data.extension); $( "#file0_size" ).val(response.data.size); $( "#file0_url" ).val(response.data.url); $( "#file0_download_url" ).val(response.data.download_url); $( "#file0_msg" ).html( "<span style='color:#008000;'>已上传</span>" ); $( "#file0_msg" ).removeClass( "error" ); } } } // 初始化图片上传框 var oAjaxUpload0 = new AjaxUpload( '#btnupload0' , uploadOption0); }) |
2. 上传服务端 FileUpload/Upload 在 upload.abc.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | public ActionResult Upload() { string message = "上传成功,文件大小:" + size; json = new JsonResult { Data = new { success = true , message = message, data = new { name = name, upload_name = upload_name, extension = extension, size = size, url = url, download_url = file_downloadpath + url } } }; return CrossDomainContent(json); } private ContentResult CrossDomainContent(JsonResult json) { StringBuilder sb = new StringBuilder(); sb.Append( "<script> document.domain = 'abc.com'; </script>" ); sb.Append(JsonConvert.SerializeObject(json.Data)); return Content(sb.ToString()); } |
3. 添加了document.domain 的html页面会影响到其他iframe页面,比如某些js日期控件(如 My97DatePicker/WdatePicker.js 也要加上document.domain,相应的引用 My97DatePicker/WdatePicker.js 的页面也要加上 document.domain)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库