Kentico 9 Rest API:403禁止

Kentico 9 Rest API:403禁止,kentico,Kentico,我用的是Kentico9。我已经在我的定位机上部署了我的CMS应用程序。我已经按照教程()中给出的说明配置了RESTAPI 但我仍然得到了以下错误: Status Code: 403 Forbidden Cache-Control: private Date: Wed, 29 Nov 2017 11:51:20 GMT Server: Microsoft-IIS/7.5 Transfer-Encoding: chunked X-AspNet-Version: 4.0.30319 X-Frame-

我用的是Kentico9。我已经在我的定位机上部署了我的CMS应用程序。我已经按照教程()中给出的说明配置了RESTAPI

但我仍然得到了以下错误:

Status Code: 403 Forbidden
Cache-Control: private
Date: Wed, 29 Nov 2017 11:51:20 GMT
Server: Microsoft-IIS/7.5
Transfer-Encoding: chunked
X-AspNet-Version: 4.0.30319
X-Frame-Options: SAMEORIGIN
X-Powered-By: ASP.NET

禁止通常意味着您未经授权,rest API通常要求您在header中发送身份验证令牌,以确定谁在请求资源,因此请检查(使用postman程序测试您的API),否则可能是您的web配置上的handle Module标记未设置(请参阅有关扩展URL的文档). 试试这些,否则如果你能告诉我们你的请求的细节(标题,url等),这将有更多帮助

确保启用了匿名身份验证。

连接到rest API时,需要提供凭据。创建有效用户并提供凭据,同时直接浏览浏览器


如果您试图使用任何程序访问api,则需要在httpclient对象上传递凭据。有关更多信息,请参阅链接:-

有两种允许访问的方法。您可以生成一个哈希,将其作为查询字符串参数添加到请求URL的末尾,从而为未经身份验证的用户提供访问权限,或者进行身份验证。RESTAPI必须先启用,然后才能工作

允许您在请求头中指定用户名和密码,因此您只需发出一个请求即可进行身份验证和获取数据。听起来这就是你想要做的。如果您需要一个工具,它是测试RESTAPI的一个很好的免费工具。这可能对你有帮助。它允许您在测试时指定用户名和密码,并处理信息加密和构建标头属性。它还可以通过为您提供的加密信息吐出代码样本

下面是一些由失眠生成的代码示例

如果您使用basic auth构建Javascript请求,它将如下所示:

var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://example.com/rest/macro/MyCustomMacro()");
xhr.setRequestHeader("authorization", "Basic Aml6dGFsa3byb2Nlc356R3Ryd1VHQVNeb1BabmVjQQ==");

xhr.send(data);
var client = new RestClient("https://example.com/rest/macro/MyCustomMacro()");
var request = new RestRequest(Method.GET);
request.AddHeader("authorization", "Basic Aml6dGFsa3byb2Nlc356R3Ryd1VHQVNeb1BabmVjQQ==");
IRestResponse response = client.Execute(request);
在C#world中,代码应该是这样的:

var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://example.com/rest/macro/MyCustomMacro()");
xhr.setRequestHeader("authorization", "Basic Aml6dGFsa3byb2Nlc356R3Ryd1VHQVNeb1BabmVjQQ==");

xhr.send(data);
var client = new RestClient("https://example.com/rest/macro/MyCustomMacro()");
var request = new RestRequest(Method.GET);
request.AddHeader("authorization", "Basic Aml6dGFsa3byb2Nlc356R3Ryd1VHQVNeb1BabmVjQQ==");
IRestResponse response = client.Execute(request);

您可能希望专门为API调用创建一个Kentico用户帐户,以便可以将密码与与实际用户绑定的用户帐户分开管理。据我所知,用户需要具有管理员权限才能使REST api正常工作。

很抱歉,找不到您要查找的页面!您是否在web.config中配置了
runAllManagedModulesForAllRequests
键?经常犯的错误……是的。runAllManagedModulesForAllRequests设置为True感谢回复。我们到底需要在哪里设置基本身份验证的用户名和密码,如下所示。对于基本身份验证,您需要通过每个REST请求头中的授权行指定用户名和密码。标题行包括:身份验证类型(基本)用户名和密码,由冒号连接(用户名:密码),使用Base64算法编码