【问题标题】:How to access SSL enabled WCF service from jQuery?如何从 jQuery 访问启用 SSL 的 WCF 服务?
【发布时间】:2012-10-01 14:07:38
【问题描述】:

我想从 asp.net 2.0 应用程序访问启用 SSL 的 WCF 服务。网站托管在 IIS 7 上。

这是代码

function getCourse() {
    $.ajax({
        type: "GET",
        url: "https://website.com/service.svc/task",
        processData: false,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        timeout: 7000,
        username: "someusername",
        password: "somepassword",
        success: function (data) { alert("success"); },
        error: function (xhr, status, error) { alert("error"); }
    });
};

我收到 401 错误,我没有在 iis 或 webconfig 中进行任何与 ssl 访问相关的配置?我在这里错过了什么吗?还是我使用的是 asp.net 2.0 应用程序导致了错误?

【问题讨论】:

  • 您的 WCF Web 服务是否需要额外的标头来进行验证和身份验证?
  • 是的,用户名和密码。我将它传递给 jQuery 函数。
  • 您可以将数据类型从 json 更改为 jsonp,这应该有助于您访问不同域上的 Web 服务。

标签: jquery wcf


【解决方案1】:

我认为您可能需要在 jquery ajax 函数中添加额外的标头,如下所示:

headers: { 
    Authenticate: Basic username:password (to base64)
}

beforeSend: setHeaders

function setHeader(xhr) {
    xhr.setRequestHeader('Authorization', 'Basic base64.encode(username:password)');
}

根据 Wiki,401 Unauthorized 被定义为

类似于 403 Forbidden,但专门用于身份验证时 是必需的,但已失败或尚未提供。

响应必须包含 WWW-Authenticate 标头 字段 包含适用于所请求资源的质询。见基本 访问认证和摘要访问认证。

参考 HTTP 状态码:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
基本访问认证:http://en.wikipedia.org/wiki/Basic_access_authentication

【讨论】:

  • 我确实尝试了以下代码,但没有运气。标头:{“授权”:“基本用户名:密码”}
  • 我做了但是给了我js错误! EX:“授权”:“基本”+ Base64.encode(“用户名:密码”)
  • 也许可以尝试另一种方法,创建以下函数 setHeader(xhr) { xhr.setRequestHeader('authorization', 'Basic Base64.encode('username:password')');并将 setHeader 添加到 beforeSend
  • 您可能还想看看这篇文章,这也许会给您一些东西 - stackoverflow.com/a/9570852/786796
  • 我想问题是,我在本地主机上运行。我将尝试在托管服务器上运行。
猜你喜欢
  • 1970-01-01
  • 2011-03-02
  • 2010-09-30
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多