问题
用WebUploader网页上传插件进行跨域上传的时候,只有IE可以成功,经过1天的调试发现问题所在
在进行AJAX进行上传的时候,会先发送一个OPTIONS的预检请求,然而在IIS的配置里面
没有允许OPTIONS的请求
所以我在服务端加断点调试发现请求根本进不去服务端的方法,而用IE的时候,IE根本没有预检请求,所以IE就可以调试成功
解决办法
加入允许OPTIONS的条件,再次进行测试,问题解决
贴上服务端的代码吧,一个一般处理程序
<%@ WebHandler Language="C#" Class="receive" %> using System; using System.Web; using System.IO; public class receive : IHttpHandler { public void ProcessRequest(HttpContext context) { if (context.Request.HttpMethod.Equals("OPTIONS")) { context.Response.ClearContent(); context.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:61269"); context.Response.AddHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); context.Response.AddHeader("Access-Control-Allow-Headers", "content-type"); context.Response.AddHeader("Access-Control-Max-Age", "30"); context.Response.End(); } else if (context.Request.HttpMethod.Equals("POST")) { var files = context.Request.Files; for (int i = 0; i < files.Count; i++) { var file = files[i]; var filePath = @"E:\PIC\" + Path.GetFileName(file.FileName); file.SaveAs(filePath); } context.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:61269"); } } public bool IsReusable { get { return true; } } }
跨域的要点便是在响应头中加入
Access-Control-Allow-Origin:*
如果请求头中带有Origin,则Access-Control-Allow-Origin值不能为*,必须为一个URL
AJAX跨域知识参考
http://blog.csdn.net/net_lover/article/details/5172522
时间: 2024-10-28 23:12:41