文章詳情頁
javascript - jquery中的$.post()為什么不能跨域提交數據呢?
瀏覽:141日期:2023-09-18 08:14:20
問題描述
如題,為什么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抓包),其實服務端的響應都在的。
標簽:
JavaScript
上一條:javascript - react native在run-android時出現這個錯誤該怎么解決?大神賜教下一條:javascript - antDesign的table column最后一次加載的時候this是undefined 怎么回事
相關文章:
1. javascript - node.js服務端渲染解疑2. javascript - 求助關于js正則問題3. html5 - 如何解決bootstrap打開模態modal窗口引起頁面抖動?4. javascript - 求助這種功能有什么好點的插件?5. objective-c - ios百度地圖定位問題6. 微信開放平臺 - Android調用微信分享不顯示7. html - css 如何添加這種邊框?8. html5 - rudy編譯sass的時候有中文報錯9. javascript - 關于定時器 與 防止連續點擊 問題10. 為何 localStorage、sessionStorage 屬于html5的范疇,但是為何 IE8卻支持?
排行榜
