context.Response.AddHeader("Access-Control-Allow-Origin", allowHost); context.Response.AddHeader("P3P", "CP=CAO PSA OUR"); context.Response.AddHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS"); context.Response.AddHeader("Access-Control-Allow-Headers", "Origin,No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With"); context.Response.AddHeader("Access-Control-Allow-Credentials", "true"); context.Response.AddHeader("Access-Control-Max-Age", "1728000");
后台代码如上!还是无法跨域访问!!!用的是XMLHttpRequest 请问是不是要XMLHttpRequest里设置一个什么参数?
我记得jquery里的ajax 设置crossDomain:true可以解决 但是XMLHttpRequest该如何操作?????????????
OPTIONS请求返回不支持跨域!!
补充部分js
var self = this, xhr = new XMLHttpRequest(); task.xhr = xhr; xhr.upload.addEventListener("progress", function (e) { self.progress(task, e.total, e.loaded); }, false); xhr.addEventListener("load", function (e) { self.complete(task, UPLOAD_STATE_COMPLETE, e.target.responseText); }, false); xhr.addEventListener("error", function () { self.complete(task, UPLOAD_STATE_ERROR); }, false); xhr.addEventListener("abort", function () { self.complete(task, UPLOAD_STATE_CANCEL); }, false); var fd = new FormData; //处理上传参数 self._process_params(task, function (k, v) { fd.append(k, v); }); fd.append("fileName", task.name); fd.append(self.upName, task.blob || task.file, task.name); xhr.open("POST", task.url); xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); self.fire("send", task, function (result) { if (result === false) return self.complete(task, UPLOAD_STATE_SKIP); xhr.send(fd); self._afterSend(task); });
我已经解决了
if (request.HttpMethod.Equals("options",StringComparison.CurrentCultureIgnoreCase) { context.Response.StatusCode=204; }
xhr.withCredentials = false;
还要设置iis支持options请求 默认是post,get
C#代码写,不用ajax。
不知道你在说什么!
@丫的: ajax情况下即使加这些也是起不到效果的,用后台代码写
@WikiZhao: 我说 前面的就是C#代码好吧 看清楚。。。
我之前用浏览器Chrome解决过一次跨域访问的问题: 在chrome启动方式后面加上--disable-web-security就ok了
~~哎手机咋办!html5的
@丫的: 不好意思,手机端没有解决过
记得有个jsop这个可以解决跨域访问
jsonp容量太小 不能用~
@丫的: 好啊.苦逼
现在公司项目遇到的问题,用代理服务器 nginx