开发者社区> 问答> 正文

ajax 跨域请求为什么设置不了ContentType? 400 报错

ajax 跨域请求为什么设置不了ContentType? 400 报错

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

展开
收起
爱吃鱼的程序员 2020-06-04 13:21:01 579 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    注意首先,只有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属性了!



    2020-06-04 16:49:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载