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)

posted @   鸽子飞扬  阅读(4281)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示