【发布时间】:2017-08-15 06:50:59
【问题描述】:
我正在尝试通过 post 请求发送 json 数据但收到错误,我尝试了许多 stackoverflow 的答案但没有得到答案我也尝试了 jsonp 方法但没有得到任何东西。
XMLHttpRequest 无法加载 http://localhost:3000/lvl/2/data。回复 预检请求未通过访问控制检查:
否 'Access-Control-Allow-Origin' 标头出现在请求的 资源。因此不允许访问 Origin 'null'。angular.js:14516 可能未处理的拒绝: {"data":null,"status":-1,"config":{"method":"POST","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback" ,"url":"http://localhost:3000/lvl/2/data","headers":{"授权":"基本 dGVzdDp0ZXN0","Content-Type":"application/x-www-form-urlencoded","Accept":"application/json, text/plain, /"},"data":{ "代码":"测试数据"}},"statusText":""}
http 发布请求:
$http({
url:'http://localhost:3000/lvl/2/data',
method:"POST",
headers: {
'Authorization': 'Basic dGVzdDp0ZXN0',
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
'Code': 'test data'
}
}).then(function() {
console.log('submitted')
});
NodeJs 发布请求:
router.post('/lvl/2/data', function (req, res){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
res.header("Access-Control-Max-Age", "3600");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
console.log(req.body);
res.send('submitted');
});
【问题讨论】:
-
您的 nodejs 是否正确处理
OPTIONS预检请求? -
虽然
Origin 'null'建议使用file://协议加载发出请求的页面 -
你的服务器不像你那样工作
-
是页面是使用 file:// 协议加载的
-
看到这个
Response to preflight request doesn't pass access control check- 那是失败的 OPTIONS 预检 - 阅读 CORS 预检以了解 - 如果你在服务器上使用 express,你会使用 express-cors - npmjs.com/package/express-cors
标签: javascript angularjs json node.js cors