2016-11-17 90 views
1

通常,當我向非本地服務器發出jQuery請求時,它會應用Cross-site HTTP request規則,並最初發送OPTIONS請求以驗證端點的存在,然後發送請求,即Vue資源跨站點HTTP請求

GET to domain.tld/api/get/user/data/user_id 

jQuery工作正常,但我想使用Vue資源來處理請求。在我的網絡日誌中,我只看到實際的請求(最初沒有OPTIONS請求),並且沒有收到數據。

有人有一個想法如何解決這個問題?

示例代碼:

   var options = { 
       headers: { 
        'Authorization': 'Bearer xxx' 
       } 
      }; 
      this.$http.get(config.api.base_url + 'open/cities',[options]) 
       .then(function(response){ 
        console.log('new request'); 
        vm.cities = response; 
       }, function(error){ 
        console.log('error in .js:'); 
        console.log(error); 
       }); 

jquery-request

解決方案:

正如@Anton提到的,這是沒有必要有兩個請求(環境可以忽略不計)。不知道我改變了它的工作,但請求給了我一個錯誤。它包括正確設置標題。頭不應該作爲選項被通過,但作爲HTTP的屬性:

this.$http({ 
    root: config.api.base_url + 'open/cities', // url, endpoint 
    method: 'GET', 
    headers: { 
    'Authorization': 'Bearer xxx' 
    } 
}).then(function(response){ 
        console.log('new request'); 
        vm.cities = response; 
       }, function(error){ 
        console.log('error in .js:'); 
        console.log(error); 
       }); 

謝謝你們,這是一個團隊的努力:)

+0

你能告訴我們一個litlle你正在使用的代碼ans你會使用哪些選項?你有沒有看過> https://github.com/pagekit/vue-resource/blob/master/docs/config.md? –

+0

增加了一些代碼...查看了vue-resource的所有配置可能性,但控制檯只顯示一個請求...在問題中解釋。 – Lamarck

+0

我不知道你有沒有注意過,但在Chrome Dev Tools的網絡標籤中,有一個jQuery請求(在本例中爲城市),它​​顯示兩次(即使我只編碼了一個請求),一次檢查如果它作爲端點有效,另一個從後端獲取返回的對象。現在使用Vue-Resource,它只有第一個請求。允許我在問題 – Lamarck

回答

0

難道附加OPTIONS請求被作出的要求?我創建了一個小型(32 LOC)例如,工作正常和檢索數據:

https://jsfiddle.net/ct372m7x/2/

正如你所看到的,數據是從非本地服務器加載。該示例位於jsfiddle.net,並且請求是httpbin.org - 這會導致應用CORS(您可以在下面的屏幕截圖中看到Access-Control-Allow-Origin標題)。

你還看到的是,只有GET請求已被執行,在此之前沒有OPTIONS

enter image description here

+1

當然不是,這是沒有必要的,但是我沒有得到任何結果,這就是爲什麼我有這個假設。我不確定我改變了什麼,但結果現在是不同的。它正在工作:)感謝您的合作 – Lamarck