ajax 跨域请求为什么设置不了ContentType

dml124 发布于 2014/01/22 22:49
阅读 2K+
收藏 0

@红薯 你好,想跟你请教个问题:ajax 跨域请求为什么设置不了ContentType,我的博客求助http://my.oschina.net/u/218567/blog/195149

加载中
0
double9
double9

注意首先,只有POST请求设置Content-Type这个HTTp Header头才有效。

错误原因你的代码里没有加type:'POST',不过我加了这个玩意后,发现发起的还是GET请求,这就奇了怪了,难道jQuery也有bug?

我查看了源代码,jQuery-1.9第8370行有如下代码

if (s.crossDomain) {
        s.type = "GET";
	s.global = false;
}

说明了如果你设置了crossDomain属性,那必定是一个get请求。

另外楼主想做跨域请求,你这个设置有问题,因为你既用了jSONP,又用了cross-domain两种跨域方法。查看源代码你可以发现cross-domain的原理是用script标签实现的。源码片段如下

send: function(_, callback) {

	script = document.createElement("script");

	cript.async = true;

	f (s.scriptCharset) {
	script.charset = s.scriptCharset;
	}

	script.src = s.url;
     ...  省略
解决方法:用了jsonp,就不要配置crossDomain属性了!



返回顶部
顶部