簡體   English   中英

XMLHttpRequest無法加載“…所請求的資源上沒有'Access-Control-Allow-Origin'頭。” — jQuery

[英]XMLHttpRequest cannot load “ …No 'Access-Control-Allow-Origin' header is present on the requested resource.” — Jquery

我最近對此請求有疑問。令我最困惑的是,直到將其部署到我的機器上,該問題才會在localhost上發生。 然后,我不得不改變我的代碼,以支持跨域請求,如建議在這里

在此之前

 $.get('//js.mysite.com/javascript.php', options, function(xml) {
                $(xml).find('item').each(function(idx) {
                .....
             },
            'xml'
        );

現在我改為

 $.ajax({
            type : 'GET',
            url : '//js.mysite.com/javascript.php/',
            data : options,
            dataType : 'xml',
            success : function(xml) {
           .....

             },
            jsonp: 'jsonp'
        });

兩者都可以在我的本地計算機上正常工作。 但是他們在我的開發機器上失敗了。 當我在開發瀏覽器上通過網絡檢查並檢查請求標頭時,我意識到托管站點上的請求URL將返回為

Request Url https://js.mysite.com/javascript.php?prefix=prefix&media=2&campaign=15&mode=txt

和我的本地機器

 Requst Url http://js.mysite.com/javascript.php?prefix=prefix&media=2&campaign=15&mode=txt

當我從托管站點返回的鏈接將https更改為http時,它可以正常工作。 我的問題是https來自哪里? 考慮到它在托管站點上返回https和在本地上返回http,我如何更改代碼以支持此類更改。 托管站點返回404錯誤,錯誤消息xmlhttprequest cannot load no 'access-control-allow-origin' header is present on the requested

任何幫助,建議或更好的解釋將不勝感激。

  1. 要設置的CORS請求者方案以及域。 因此,您需要檢查https://js.mysite.com是否已添加到服務器的CORS允許的部分(或使用通配符“ *”)
  2. 您使用默認模式(“ //”),它適合不可抗拒的情況。 將其更改為http會引起安全性問題:大多數瀏覽器會阻止來自https站點的http請求。 因此,您有兩種選擇:將您要請求的站點從http更改為,或將CORS請求更改為https://js.mysite ...(首先檢查ssl是否存在並且在那里工作)

HTTPS來自提供網頁的任何協議。 即,如果您的遠程服務器正在強制進行SSL連接,它將使用HTTPS

這是因為//你的url : '//js.mysite.com/javascript.php/',告訴你的客戶端使用當前發出請求的網頁的協議。

編輯:我的猜測是您的遠程服務器不支持HTTPS請求。 您可以啟用SSL,或僅在應用程序上使用HTTP。

暫無
暫無

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

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