javascript - jquery中的$.post()为什么不能跨域提交数据呢?
问题描述
如题,为什么jquery中封装的ajax方法,使用jsonp可以get方式提交数据,但是直接用post的方式,跨域后就无法提交,其根本原因是什么呢?
问题解答
回答1:jquery自身的功能是不支持的,但是你可以基于jquery实现跨域post。
jquery本身只支持jsonp跨域,但是jsonp的原理限制了只能支持get。
如果想要实现原生jquery跨域,在你的请求地址的head里面加上Access-Control-Allow-Origin,值设置成调用该API的域名(或者*)
回答2:跨域一般分两种:
jsonp 跨域。 jsonp 本来就是使用 get 文件的方法绕过跨域检查,所以不支持post。也有第三方库用get来模拟post请求。
COR 跨域。 COR 跨域需要修改服务端 Access-Control-Allow-Origin 响应。 一般客户端会发送两次 post 请求,第一次类型为 option,服务端响应允许后,第二次发送真正的带数据的请求。如果答主条件许可,尽量使用第二种跨域方法吧,可以直接支持 post。
如果无法修改服务端配置,答主可以去找一下第三方的库,看看能否用jsonp模拟 post 请求。
回答3:注意,不是jquery不支持,而是浏览器在没有允许跨域的头的时候,就把响应拦截掉了,然后给你了个错误。jquery在接收到这个错误之后,就会给你报跨域的错误。你可以抓个包看看(注意不要用浏览器的f12抓包),其实服务端的响应都在的。
相关文章:
1. javascript - es5中Object.seal()密封对象后,可以修改对象原型上的属性吗?2. python - 用urllib抓取网页上的下载链接,目标文件是xls形式,但发现抓下来的xls是空表,里面只有一句报错信息,求帮助。3. 利用百度地图API定位及附件商家信息服务4. win10 python3.5 matplotlib使用报错5. 修改my.cnf后mysql无法运行???6. 怎么能做出标签切换页的效果,(文字内容随动)7. javascript - vue2如何动态生成checkbox默认选中,获取数据8. (python)关于如何做到按win+R再输入文件文件名就可以运行?9. 怎样用python给mp3添加封面?10. python - 图片爬虫时候遇到问题 urllib.request.urlretrieve 下载到指定文件夹不成功?

网公网安备