2011-12-12 30 views
1

我想調用通過基本身份驗證驗證用戶的OData .NET Web服務。基本身份驗證和jQuery/ajax調用

我用下面的Ajax調用:

var fullUri = APIUri + "?$format=json"; 
$.ajax({ 
    url: fullUri, 
    contentType: "application/json", 
    dataType: "jsonp", 
    type: 'GET', 
    jsonp: '$callback', 
    beforeSend: function setHeader(xhr) { 
     xhr.setRequestHeader('Authorization', token); 
    }, 
    success: callback, 
    error: function (xhr, ajaxOptions, thrownError) { 
     alert(thrownError); 
    }, 
}); 

結果不可作我:

  • 呼叫被阻止,因爲CORS(直到我將粘貼API的網址,並嘗試將其加載到鍍鉻的)。我嘗試將本地html文件和html文件上傳到相同的域/端口,但驗證失敗(根據Chrome控制檯)。
  • 一旦我將服務URL輸入到Chrome地址欄中,我被要求通過Chrome提供登錄名和密碼。如果我輸入它們,它們將被緩存並使用,即使我將它們分配在beforeSend中。如何阻止這種行爲?

我試了很多例子,如何配置jsonp,頭文件等,但沒有找到工作解決方案。

也使用「Access-Control-Allow-Origin」value =「*」配置IIS服務器響應標頭。

回答

0

您可以設置HTTP用戶名和密碼在AJAX調用直接:

$.ajax({ 
    url: fullUri, 
    contentType: "application/json", 
    username: <login>, 
    password: <password>, 
    ... 
0

使用以下支持CORS:

jQuery.support.cors = true; 

關於呼叫,您使用HTTPS?證書是否有效?

+0

是否需要HTTPS?我不使用它,只是HTTP。 –

+0

沒有。我只是問問 :) –