2016-04-23 98 views
0

我很難試圖在兩個域之間工作一個簡單的jQuery的Ajax。jquery的Ajax與CORS不工作

當我嘗試在站點A中執行Ajax時,在開發人員工具的網絡部分中,我在與站點B相關的GET方法中收到'404 Not found'。 我還在控制檯中看到此消息:「...缺少CORS頭 '訪問控制允許來源'」

在 「站點A」 我有這樣的:

<script> 
    var xhr = new XMLHttpRequest(); 
    xhr.open("get", "http://domainB.com/resource.php", true); 
    xhr.onload = function() { 
     console.log('Connected!'); 
    }; 
    xhr.send(null); 

    $.ajax({ 
     url: 'http://domainB.com/resource.php', 
    }).done(function ($result) { 
     //somecode 
    }); 
</script> 

而且在資源的服務器( 「站點B」):

<?php  
    header('Access-Control-Allow-Origin: *'); 
    header('Access-Control-Allow-Methods: GET, POST'); 
    header("Access-Control-Allow-Headers: X-Requested-With"); 
    //somecode 

這是我第一次使用CORS,我真的不知道什麼是錯的。

謝謝

+0

有一個小竅門,爲CORS在Mozilla Firefox addons.mozilla.org/pl/firefox/addon/cors-everywhere到處插件,但這是治標不治本 – Grisza

回答

0

最後我得到了這個職位的答案: http://www.html5rocks.com/en/tutorials/cors/。 看來這個問題出現在我的Ajax代碼中,我只是添加了一些屬性,現在它完美地工作了。 這是我現在阿賈克斯的樣子:

 $.ajax({ 
      type: 'GET', 
      url: url, 
      cache: false, 
      contentType: 'text/plain', 
      xhrFields: { 
       withCredentials: false 
      }, 
     }).done(function ($result) { 
      //somecode 
     }); 
0

在PHP頁面開始添加以下代碼

http://domainB.com/resource.php

header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Allow-Credentials: true "); 
header("Access-Control-Allow-Methods: OPTIONS, GET, POST"); 
header("Access-Control-Allow-Headers: Content-Type, Depth, User-Agent, X-File- Size, 
X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control"); 
+0

它沒有工作,你的代碼我在domainB.com/request.php上收到了這個錯誤:「警告:標題可能不包含多於一個標題,在http://domainB.com/resource.php中檢測到新行在線7「,並且我仍然在domainA控制檯中收到此錯誤:」跨源請求被阻止:同源策略不允許在http://domainB.com/resource.php處讀取遠程資源(原因: CORS標題'Access-Control-Allow-Origin'缺失)。「 –