2015-10-21 47 views
1

我在探索骨幹js,我的要求是將用戶詳細信息(如姓名,電子郵件ID等)發佈到web服務。但是,當我運行應用程序,我得到錯誤一樣,CORS問題 - 從Backbone調用Web服務JS

在Chrome,

的XMLHttpRequest無法加載本地主機:8080 /服務/客戶/。對預檢請求的響應不會通過訪問控制檢查:請求的資源上不存在「訪問控制 - 允許來源」標頭。因此不允許訪問Origin'localhost:8050'。

在Firefox,

跨來源請求阻止:8080 /服務/客戶/:同源策略不允許在本地主機讀取遠程資源。 (原因:缺少CORS頭'Access-Control-Allow-Origin')。無論從瀏覽器

頁眉反應是,

On Chrome On Firefox

我已經研究互聯網上,確定爲CORS的問題,但我很困惑一樣沒有任何代碼的配置,我需要添加我的JS文件以及放置這些代碼的位置。如果有任何代碼,我是否需要將代碼放在單獨的js文件中?

下面是我的驗證js文件我的代碼片段,

var ValidationModel = Backbone.Model.extend({ 

urlRoot: 'http://localhost:8080/service/customer', 
defaults: { 
    ID: '', 
    fname: '', 
    lname: '', 
    email: ''..... 
myValidationModel.save(myValidationModel.attributes, 
     { 
    success: function(model, response, options){ 
     console.log('Model Saved..'); 
     console.log('ID: ' + myValidationModel.get('id')); 
    }, 
    error: function(model, xhr, options){ 
     console.log('Failed to save model'); 
    }... 

我真誠地請求你的朋友,我是新來這個,你能告訴我一個想法,指導,建議,就如何解決這個問題,以及在哪裏放置代碼。如果你能把我和任何有用的文章聯繫起來,那將是非常有利的。

非常感謝。

+0

是來自localhost的網頁,還是您在文件資源管理器中打開它? –

+0

不,它只來自locahost,我使用spring套件工具來開發此應用程序。 – Shr4N

+0

neeed爲cors配置服務器,或從同一個服務器端口提供頁面 – charlietfl

回答

0

這是一個服務器端問題。 This對如何在不同平臺上啓用CORS提供了一個很好的總結。

如果您因爲在本地開發而感到困惑,那麼請注意,不同的PORT號碼也會拋出CORS錯誤。

例如我有一個服務器在http://localhost:8080與一個網站上運行。我還有另一個網站http://localhost:8082,它使用8080上的服務,這會導致CORS問題。

在客戶端唯一需要注意的是,如果添加任何附加頭文件,那麼服務器端的CORS必須配置爲允許使用這些頭文件。例如,我添加了以下安全令牌,以便骨幹可以訪問服務器端的模型數據:

$.ajaxSetup({ 
    headers : { 
     "X-Auth-Token" : usercredentials.getAccessToken(), 
    } 
}); 

這意味着CORS在服務器端必須允許頭X-Auth-Token。如果您沒有添加任何額外的標頭,那麼通常是您只需要配置Origin並允許相關方法GET,POST, PUT等。。 。

就您的情況而言,您似乎必須在您的服務器上配置CORS以允許來自Originlocalhost:8080POST調用。客戶端將自動添加此標頭。服務器只需要允許它。