我正在使用此HTTP POST请求代码将json数据发送到Couchbase存储桶/文档。我不知道为什么它会因为"XMLHttpRequest send Failed to load resource: the server responded with a status of 405 (Method Not Allowed)"
当我对此进行测试时,它通过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)
有人可以告诉我问题出在哪里吗?有办法解决吗?
答案 0 :(得分:1)
我非常确定您正在做的是从浏览器向Couchbase Server发出POST请求。您收到的405错误很可能是由于CORS引起的。无法在Couchbase Server中关闭CORS(我猜除非您自己进行分叉和编译)。 Couchbase Server不能像这样从浏览器直接访问。
一些选项:
Couchbase服务器位于API的后面,您将使用自己选择的SDK(节点,Java,.NET等)与那里的Couchbase进行交互。
在Couchbase前面使用Sync Gateway,该API具有允许您启用CORS的API(请参见Sync Gateway Public REST API documentation)。
在浏览器(like in Chrome)中关闭同源策略,但这对于大多数应用程序通常不可行,因为您需要每个用户都关闭CORS。