2015-11-20 88 views
54

我試圖從我的應用程序向Tomcat服務器發送Ajax請求,但我得到這個錯誤(我的web應用程序在Chrome上運行):獲取請求未通過訪問控制檢查:請求的資源上沒有「Access-Control-Allow-Origin」標頭

迴應預檢要求未通過訪問控制檢查:沒有「訪問控制允許來源」標頭出現在所請求的資源。因此不允許原產地'null'訪問。響應有HTTP狀態代碼403

我一直在使用

'Access-Control-Allow-Origin' : 'http://localhost:8080/app', 

嘗試,但沒有奏效。

我的Ajax代碼:

var arr = [1]; 
    $.ajax({ 
    url: 'http://localhost:8080/app', 
    type: 'POST', 
    contentType:'application/json', 
    headers: { 
    'Access-Control-Allow-Origin' : 'http://localhost:8080', 
    }, 
     data: JSON.stringify(arr[0]), 
     success: function(data){ 
     //On ajax success do this 
      alert(data); 
      } 
    }); 
+8

必須在服務器上設置該標頭,而不是客戶端。 – dandavis

+1

在服務器上我應該在哪裏保留它 – Labeo

+0

因爲您沒有真正使用響應,您可以使用普通的舊

標記發送數據而不是ajax,這應該在不修改服務器的情況下工作, – dandavis

回答

30

基本上,做一個跨域AJAX請求,請求的服務器應該允許資源的跨源共享(CORS)。你可以閱讀更多有關在這裏: http://www.html5rocks.com/en/tutorials/cors/

在您的情況,您要設置在實際上需要將其設置成http://localhost:8080/app服務器端代碼客戶端頭。

如果您使用的是PHP的Apache服務器,那麼你將需要添加在你.htaccess文件如下:

Header set Access-Control-Allow-Origin "*" 
+0

http://stackoverflow.com/questions/41854438/how-to-use-api-key-along-with-cors-in -web-api我正在嘗試使用CORS以及額外的安全性,但它不起作用。任何想法? – Si8

+0

OP說他使用Tomcat – Pere

+0

我有同樣的問題埠,當我cuse crul可以返回成功,但在Ajax顯示這個錯誤? – Araf

11

在請求一個REST服務的情況下:

你需要讓REST服務帶有Spring註釋的端點上的CORS(資源的交叉來源共享):

@CrossOrigin(origins = "http://localhost:8080") 

非常好的教程:https://spring.io/guides/gs/rest-service-cors/

相關問題