簡體   English   中英

為什么這個 jQuery.ajax 不會引發錯誤?

[英]Why does this jQuery.ajax not raise an error?

今天早上我們遇到了一個有趣的問題——問題本身的細節在這里並不重要,我已經修復了它,但我確實遇到了一些奇怪的事情,對我來說,關於 jQuery。

The site I am building internally runs on https, only, so Apache is set to redirect any inbound http request to its https equivalent. 此重定向工作正常。 但是,我的軟件中有一個錯誤,我試圖發送以下 ajax 請求:

jQuery.ajax({  type:       "PUT",
           url:        "http://somewhere.com/cmdt/todo_lists/8457/toggle",
           data:       { deployment_id: 827},
           dataType:   "script"});

我知道這會失敗 - 我可以接受 jQuery 不想遵循重定向。 但實際行為更奇怪:我根本沒有看到 xhr 請求 go 出來,也沒有 javascript 錯誤。 如果我將 url 更改為 https 或相對路徑,它就會默默地失敗。 它工作正常,沒問題嗎? 我的問題是? 為什么之前沒有嘗試發送請求? 為什么它沒有引發錯誤?

您沒有失敗的原因是因為它是一個跨站點請求,因此不是使用XMLHttpRequest ,它實際上是生成一個 HTML <script>標簽並將其放入 DOM,並使用該機制加載文件。

這工作得相當好(考慮到這是對錯誤的瀏覽器“安全”概念的徹底破解),但遺憾的是,jQuery 無法在此時捕獲錯誤。 如果您打開了開發人員模式,您可能會收到瀏覽器錯誤,但僅此而已。

如果您從 url 即https運行它並嘗試打開等效的http頁面,由於它們使用的協議不同,您會遇到跨域問題。 看看同源政策

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM