【发布时间】:2017-06-21 15:53:44
【问题描述】:
作为这个问题“Make POST JSON Request From HTML Script To A Node.JS App In Another Domain”的后期,我实现了一个CORS POST请求:
var request = new XMLHttpRequest();
var params = "parameter=test";
request.open('POST', 'http://localhost:3009/param_upload', true);
request.onreadystatechange = function() {if (request.readyState==4) alert("It worked!");};
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send(params);
它与互联网上的示例非常接近。这是我在 node.js 服务器端的设置:
app.use(cors());
var corsOptions = {
origin: '*',
credentials: true,
allowedHeaders: ['*'],
optionsSuccessStatus: 200
}
当然,我的 app.post 函数的标头中有 cors(corsOptions)。然而不知何故,身体是空的。作为请求,我得到了一个很长的响应,里面没有测试文本。我可能错过了一点,但环顾四周却找不到。如果有人帮忙,我会很高兴的。
【问题讨论】:
-
在控制台中查找错误?对于
allowedHeaders和*,请参阅stackoverflow.com/questions/13146892/… -
函数返回成功。没有错误。我会检查 allowedHeaders。
-
“但不知何故主体是空的”节点JS端或发送的http请求本身是空的?为什么在使用 cors 中间件后创建一个 corsOptions 对象?您必须将这些选项提供给 cors 中间件功能才能激活:
app.use(cors(corsOptions)); -
我只看到了 node.js 端,那里是空的。如果该函数只需要 CORS,则建议在函数内部使用带有 cors() 的 corsOptions 的示例,因此以这种方式实现。也会尝试您建议的方式。
-
您可以使用浏览器检查器。大多数时候右键单击并检查。然后转到网络选项卡。现在您可以看到所有请求,当您单击请求时,您应该会看到它的详细信息。
标签: javascript node.js cors