簡體   English   中英

混合內容 jQuery ajax HTTPS 請求已在 Laravel 上被阻止

[英]Mixed content jQuery ajax HTTPS request has been blocked on Laravel

我認為這個問題對某人來說很容易,對我來說將是一個面對面的情況。

我有一個 Laravel 5.3 站點,各種頁面都有 ajax 請求。 因為我使用csrf_field()功能,所以它們工作正常。

但是有一頁 ajax 產生了這個錯誤:

Mixed Content: The page at 'https://example.com/fb/reports' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://example.com/fb/json?levelType=&id=&aggLevel=ad&start=&end='. This request has been blocked; the content must be served over HTTPS.

我的 javascript 看起來像這樣:

    var relUrl = '/fb/json/';
    var payload = {
        levelType: levelType,
        id: id,
        aggLevel: aggLevel,
        start: start,
        end: end
    };
    console.log(relUrl);
    return $.ajax({
        type: 'GET',
        dataType: 'json',
        data: payload,
        url: relUrl,
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }            
    });

我已經閱讀了大量有關此錯誤的文章。 我已經嘗試了大量建議的解決方案,包括將相對 URL 更改為完整的 https URL,或者以 2 個斜杠開頭。

我什至嘗試改變我的 Laravel 路由的工作方式,現在我只使用查詢字符串參數。

我已經研究了以下所有文章(以及更多文章)。

此外,由於這一個AJAX查詢是站點(和AJAX的查詢工作都在網站的公共/開放的部分)的密碼保護部分,我也許想通這是相關的問題。 但后來我用SSH登錄到生產服務器和vim暫時移除所需的任何認證就行了,https的錯誤仍然會發生。

我可以采取哪些步驟來進一步調試? 我可以在 Cloudways 服務器上“拖尾”哪些日志?

Cloudflare 是否有任何可能會干擾的內容(我對此表示懷疑,因為其他 ajax 查詢都在 https 上工作)?

謝謝!

總結:我需要替換var relUrl = '/fb/json/'; 使用var relUrl = '/fb/json'; (刪除尾部斜杠)因為這是我的 Laravel web.php路由文件所期望的。


在 Chrome 控制台中,我注意到https XHR 請求被“取消”並替換為http請求。

於是我用ssh登錄遠程生產服務器,用vim暫時禁用認證要求。

然后在 Chrome 控制台中,我使用絕對 https URL 定義並運行了一個新的 ajax 命令,最后是查詢字符串參數。 那行得通(沒有混合內容錯誤)。 然后我嘗試了一個這樣的相對 URL,它也有效。

即使是沒有有效負載或查詢字符串參數或尾部斜杠的相對 URL 也能工作。

然后我再次添加了尾部斜杠,但它不起作用。

我仍然希望有一種更簡單的方法來跟蹤或調試重定向路徑或發生的任何事情。 我仍然覺得我笨拙地(幾個小時后)偶然發現了答案,而不是知道如何可靠地剖析這個問題。

暫無
暫無

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

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