基本身份验证和jQuery / ajax调用

时间:2011-12-12 14:45:16

标签: ajax jquery odata

我想调用OData .NET Web服务,通​​过基本身份验证对用户进行身份验证。

我使用以下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网址并尝试将其加载到chrome中)。我尝试将本地html文件和html文件上传到同一个域/端口,但身份验证失败(根据Chrome控制台)。
  • 我将服务网址输入到Chrome地址栏后,系统会要求我提供Chrome的登录名和密码。如果我输入它们,它们将被缓存并使用,即使我在beforeSend中分配它们。如何阻止这种行为?

我已经尝试了很多例子如何配置jsonp,header等,但还没有找到工作解决方案。

还使用“Access-Control-Allow-Origin”value =“*”配置IIS服务器响应头。

2 个答案:

答案 0 :(得分:0)

您可以直接在AJAX Call中设置HTTP密码和用户名:

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

答案 1 :(得分:0)

使用以下内容支持CORS:

jQuery.support.cors = true; 

关于通话,您使用的是HTTPS吗?证书有效吗?

相关问题