如何解决使用WordPress REST API删除媒体
我正在尝试使用带有cookie身份验证的rest-api从WordPress库中删除媒体。我可以创建文件(POST)和检索(GET)文件内容,但是DELETE不起作用。我正在使用IIS 10.0版。
注意:此代码在网站域上而不是其他域上运行。
我尝试过的事情:
- 在服务器上启用WebDAV
- 使用的基本WordPress身份验证插件
这是我正在使用的XMLHttpRequest:
var apiCall = new XMLHttpRequest();
apiCall.onreadystatechange = function() {
...
};
apiCall.open("DELETE",wpApiSettings.root + "wp/v2/media/");
apiCall.setRequestHeader("X-WP-Nonce",wpApiSettings.nonce);
apiCall.send("2000");
我得到的错误:
HTTP Error 401.0 - Unauthorized. You do not have permission to view this directory or page.
仅当执行删除操作时,GET或POST才不会出现此错误,这使我考虑了IIS中的身份验证。也许它甚至没有到达WordPress引擎,而IIS正在拦截该请求并拒绝它。我以为启用WebDAV可以解决,但遗憾的是,没有。
解决方法
首先,401错误通常表示请求未通过身份验证。我们必须基于IIS中的身份验证模式设置凭据。如果需要基本凭据,我们需要像下面这样设置HTTP标头,
xhr.setRequestHeader('Authorization','Basic ZWx1c3VhcmlvOnlsYWNsYXZl');
How to send a correct authorization header for basic authentication
另外,为了支持Delete
HTTP动词,请将以下代码添加到webconfig
文件中。
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/> <!-- ADD THIS -->
</modules>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。