2015-12-01 121 views
5

我有一個使用Laravel,Dingo和JWT令牌驅動的API。使用PAW測試API調用完美。使用沒有中間件的jQuery運行API調用JWT令牌禁用工作正常。但只要我嘗試運行與JWT令牌即時得到一個401JWT令牌與jQuery Ajax

我失去了與Ajax請求一招一個Ajax請求。你能看到這個代碼有問題嗎?

$.ajax({ 
    url: "http://api.domain.app/products", 
    dataType : 'jsonp', 
    type: 'GET', 
    beforeSend : function(xhr) { 
     xhr.setRequestHeader("Accept", "application/json"); 
     xhr.setRequestHeader("Content-Type", "application/json"); 
     xhr.setRequestHeader("Authorization", "Bearer XXXX"); 
    }, 
    error : function() { 
     // error handler 
    }, 
    success: function(data) { 
     console.log(data); 
     return data; 
    } 
}); 

由於跨域,我不得不使用jsonp。但是,這再次正在細化JWT中間件。

希望你能勸..

回答

1

我刪除從子域的API和它的工作的罰款。它必須與jsonp和JWT令牌有關。

+0

您的代碼是正確的。可能你遇到了CORS請求的問題。 –

+0

您是否將jwt存儲在本地/會話存儲窗口中?因爲這不適用於子域名。 – Volt

1

HTTP狀態代碼401是「未授權」,認證是必需的,發生故障或尚未各得其所的意思。 在這種情況下,這是因爲它沒有被正確提供。您正試圖在beforeSend參數中提供它。 beforeSend爲您提供了在發送之前操縱XMLHttpRequest的機會,但問題是,您正在使用JSONP。而JSONP自從JSONP僅僅是一個<script>標籤插入技巧,它並不使用XMLHttpRequest,所以操縱它毫無意義。

Here是JSONP正是一個很好的解釋。

你的問題是:「你可以看到一個問題,此代碼嗎?」,我上面的回答。 您可能想問的是「我如何獲得授權問題以使用jQuery?」。 你說:「我必須使用跨域的jsonp」,如果你詳細闡述「由於跨域」原因,導致解決方案的答案將更容易生成。 The answer in this issue可能會解決您的問題,但如果沒有更多信息很難說明問題。