【问题标题】:Getting CORS error while connecting to a node js service from ionic framework从 ionic 框架连接到节点 js 服务时出现 CORS 错误
【发布时间】:2016-05-12 13:17:45
【问题描述】:

我有以下用 Node js 编写的服务。通过浏览器单独访问时,该服务运行良好。

     var http = require('http');
     const PORT=8124; 

     var server = http.createServer(function (request, res){
     //res.setHeader(Access-Control-Allow-Origin, *);

     var json = JSON.stringify({
     id : 1,
     message : 'Hurray it worked'
     });

     res.end(json);
     });


    server.listen(PORT, function(){
       console.log("Server listening on: http://localhost:%s", PORT);
    }); 

我正在从下面的离子应用程序调用上述服务。

     angular.module('starter.controllers', [])

     .controller('LoginCtrl', function($scope, $http) {
     $scope.data = {};

     $scope.login = function() {

     $http.post("http://localhost:8124")
        .success(function(data){

            alert("Success");

        })
        .error(function (error){

              alert(error);

           });       
         }
       })

我在运行应用程序时收到以下错误。

跨域请求被阻止:同源策略不允许读取位于http://localhost:8124/ 的远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)

为了解决 CORS 问题,我添加了以下代码行

res.setHeader(Access-Control-Allow-Origin, *);

但是现在服务本身不起作用。

代码有什么问题吗?

【问题讨论】:

    标签: node.js ionic-framework


    【解决方案1】:

    您必须用引号将 * 括起来

    res.setHeader(Access-Control-Allow-Origin, '*');
    

    【讨论】:

    • 如果这不是公共 api,我会尝试采用白名单方法
    • 杰罗姆,感谢您的回复!如果我添加以下行 res.setHeader('Access-Control-Allow-Origin', '');从命令提示符 > const PORT=8124; 运行它时出现以下错误undefined > var server = http.createServer(function (request, res){ ... res.setHeader('Access-Control-Allow-Origin', ''); ... repl.js:296 top .outputStream.write((e.stack || e) + '\n'); TypeError: Cannot read property 'outputStream' of undefined
    • 星星不见了res.setHeader('Access-Control-Allow-Origin', ''); -> res.setHeader('Access-Control-Allow-Origin', '*');
    【解决方案2】:

    尝试使用这个 Google chrome 扩展程序,它为我解决了很多问题。 https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

    【讨论】:

    • 哈立德,感谢您的回复。但我正在使用Firefox。出于某种原因,chrome 不适合我!
    猜你喜欢
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2016-06-08
    • 1970-01-01
    相关资源
    最近更新 更多