向本地nodeJS服务器发出发布请求时出现AngularJS CORS错误

Posted

技术标签:

【中文标题】向本地nodeJS服务器发出发布请求时出现AngularJS CORS错误【英文标题】:AngularJS CORS error while making post request to the local nodeJS server 【发布时间】:2017-08-15 06:50:59 【问题描述】:

我正在尝试通过 post 请求发送 json 数据但收到错误,我尝试了许多 *** 的答案但没有得到答案我也尝试了 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 【参考方案1】:

您可以暂时禁用使用浏览器扩展检查 CORS:

铬:

Allow-Control-Allow-Origin: *

对于 Opera,您应该安装:

1)Extension allows you to install extensions from Chrome Web Store

2)Allow-Control-Allow-Origin: *

【讨论】:

以上是关于向本地nodeJS服务器发出发布请求时出现AngularJS CORS错误的主要内容,如果未能解决你的问题,请参考以下文章

从 ExtJS 向 node.js 请求时出现 CORS 问题。请求或响应标头不正确?

向服务器发出发布请求时出现 Json 错误

Flutter Web,向具有自签名证书的服务器发出请求时出现问题

在 Express.js 上使用 Axios 向 Spotify API 发出 POST 请求时出现错误 400

向 SWR 发出请求时出现打字稿问题

使用 Go 向 APNS 发出推送请求时出现 403 禁止错误。我是不是正确创建了 JWT?