XMLHttpRequest服务器响应状态为405(不允许使用方法)

时间:2019-01-31 22:42:13

标签: javascript couchbase

我正在使用此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)

有人可以告诉我问题出在哪里吗?有办法解决吗?

1 个答案:

答案 0 :(得分:1)

我非常确定您正在做的是从浏览器向Couchbase Server发出POST请求。您收到的405错误很可能是由于CORS引起的。无法在Couchbase Server中关闭CORS(我猜除非您自己进行分叉和编译)。 Couchbase Server不能像这样从浏览器直接访问。

一些选项:

  1. Couchbase服务器位于API的后面,您将使用自己选择的SDK(节点,Java,.NET等)与那里的Couchbase进行交互。

  2. 在Couchbase前面使用Sync Gateway,该API具有允许您启用CORS的API(请参见Sync Gateway Public REST API documentation)。

  3. 在浏览器(like in Chrome)中关闭同源策略,但这对于大多数应用程序通常不可行,因为您需要每个用户都关闭CORS。