Javascript XMLHttpRequest服务器响应状态为405(不允许使用方法)
我使用这个HTTP POST请求代码将json数据发送到Couchbase bucket/document。我不知道它抛出错误的确切原因,因为Javascript XMLHttpRequest服务器响应状态为405(不允许使用方法),javascript,couchbase,Javascript,Couchbase,我使用这个HTTP POST请求代码将json数据发送到Couchbase bucket/document。我不知道它抛出错误的确切原因,因为“XMLHttpRequest发送加载资源失败:服务器响应状态为405(不允许使用方法)” 当我测试这个时,它通过Postman运行良好 var params = { "EmpID":"567453", "EmpAddress": "XX", "EmpAccount": "89723", "EmpName": "user19
“XMLHttpRequest发送加载资源失败:服务器响应状态为405(不允许使用方法)”
当我测试这个时,它通过Postman
运行良好
var params = {
"EmpID":"567453",
"EmpAddress": "XX",
"EmpAccount": "89723",
"EmpName": "user1953977",
"EmpType": "DEV"
}
var xhr = new XMLHttpRequest();
var url = "http://xxxx:PORT/xxxx/xxx/xxx/docs/docs/firstdoc/"; // Couchbase document url
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Accept", "application/json" );
xhr.setRequestHeader("Authorization", "Basic XXXXXXXXXXXXXXXXXX");
xhr.setRequestHeader("Cache-Control", "no-cache");
var data = JSON.stringify(params);
xhr.send(data)
有人能告诉我问题出在哪里吗?有没有办法解决这个问题?我很确定,您所做的是从浏览器向Couchbase服务器发出POST请求。您得到的405错误可能是由于CORS。CORS不能在Couchbase服务器中关闭(我想,除非您自己分叉并编译)。Couchbase服务器的设计不允许像这样直接从浏览器访问 一些选择:
在使用Postman而不是运行客户端代码时,是否有可能正确验证了您的身份?无论我通过Postman使用的是“授权”、“接受”、“内容类型”,我在这里使用的都是相同的。我认为这不是问题所在。您是向Couchbase服务器还是同步网关发出这些请求?这些请求是否来自浏览器?这很好。另外一个问题是,当我以编程方式发送这种JSON数据时,它在couchbase文档中以“Binary Document,base64 not available”的形式接收,而不是接收正确的JSON数据。从技术上讲,您使用的端点不是公共API的一部分。它不受支持,没有相关文档。也就是说,你可能想看看我的答案:你好,Matthew,我不知道为什么它不能通过代码工作?这只是剩下的电话,因为它和邮递员配合得很好。我所需要的是,它正在向CB发送信息,但像这样的“二进制文档,base64不可用”。通过代码发送正确的JSON是可能的还是根本不可能?我现在正在测试它,而不是最终的代码。最后,我打算只使用SDK。这个问题问的是完全相同的问题,我的答案正好解决了这个问题。您需要将JSON文档作为表单编码的值传递到名为“value”的字段中。您没有在JavaScript中这样做(因为CORS,JavaScript无论如何都不会工作),我只能假设您也没有在Postman中这样做。我必须再次强调,这个API是不受支持的,它可能会随着版本的不同而改变/中断/消失。