我正在使用Kentico 9.我已在我的位置计算机上部署了我的CMS应用程序。我已根据教程(Kentico 9)中给出的指令配置了Rest API。
但我仍然收到以下错误:
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
答案 0 :(得分:1)
有两种允许访问的方式。您可以生成作为查询字符串参数添加到请求URL末尾的哈希,从而为未经过身份验证的用户提供访问权限,或者进行身份验证。 REST api必须先启用才能运行。
Basic authentication允许您在请求的标头中指定您的用户名和密码,因此您只需要发出一个请求来进行身份验证并获取数据。这听起来像是你想要做的。如果您需要工具,Insomnia是一个用于测试REST API的免费工具。这可能对你有帮助。它允许您在测试时指定用户名和密码,并处理加密信息和构建头属性。它也可以使用为您提供的加密信息吐出代码示例。
以下是Insomnia生成的一些代码示例......
如果您使用基本身份验证构建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);
在C#世界中,代码看起来像这样:
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的管理员权限才能工作。
答案 1 :(得分:0)
禁止通常意味着你没有被授权,其余的API通常要求你在标题中发送一个身份验证令牌来识别谁在请求资源,所以检查一下(使用postman程序来测试你的API),否则可能是您的Web配置上的句柄模块标记未设置(请参阅扩展URL上的文档)。试试这些,否则如果你可以告诉我们你的请求的详细信息(标题,网址等),这将有助于更多!
答案 2 :(得分:0)
确保已启用匿名身份验证。
答案 3 :(得分:0)
您需要在连接到rest API时提供凭据。创建有效用户并在直接浏览浏览器时提供凭据。
如果您尝试使用任何程序访问api,则需要在httpclient对象上传递凭据。有关详细信息,请参阅链接: - https://docs.kentico.com/k9/integrating-3rd-party-systems/kentico-rest-service/authenticating-rest-requests