如何通过命令设置全局变量

时间:2016-03-03 08:37:05

标签: node.js

感谢您的快速回复 我使用NodeJS(v4.3.2)和ExpressJs(v4.x)来建立网站 我使用了很多AJAX,并且所有AJAX url都指向一个静态IP(AWS Server本身) 因为我会部署到多个服务器,所以我不想单独更改AJAX网址。 我的想法是当我运行" node bin / www"命令行,我可以将其更改为" node bin / www 50.50.50.50(我的AWS地址)"我可以将所有AJAX网址设置为正确的IP吗? 是否可能或其他替代解决方案?
感谢

2 个答案:

答案 0 :(得分:2)

您的问题与CORS有关:基本上,如果http://www.example1.com未明确允许http://www.example2.com,则您无法通过Ajax通过http://www.example1.com访问域curl响应。

这是大多数现代浏览器的“安全”功能。使用Postman或chrome extension http://www.example2.com等命令行不会遇到此问题。

要解决此问题,请确保在服务器响应中的Access-Control-Allow-Origin标头中允许请求数据的域(GET),以及http谓词(POST,{每个http方法{1}},PUT ...或*

这一切都归结为将以下两个标题添加到http://www.example1.com服务器的响应中:

Access-Control-Allow-Origin: http://www.example2.com
Access-Control-Allow-Methods: *

修改

根据@ Paulpro的评论,您必须重新绑定所有网址,以便它们到达服务器的IP而不是localhost服务器。

答案 1 :(得分:0)

我解决了这个问题 首先,在bin / www
中 附加这些代码以检索命令行的URL并存储到json文件中。

function setUpURL(){
  var myURL = process.argv[2];
  console.log('myURL: ', myURL);
  var outputFilename = 'public/myURL.json';
  var myData = {
    port:myURL
  }

  fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err) {
      if(err) {
        console.log(err);
      } else {
        console.log("JSON saved to " + outputFilename);
      }
  }); 
};  

然后在每个包含ajax的JS中将这些代码添加到JS文件的头部(需要在ajax之前加载)

var myURL;
$.getJSON("myURL.json", function(json) {
    myURL = json.port.toString();
    console.log(myURL);
});

新的ajax格式

$.ajax({
    type: "POST",
    url: myURL + "/forgetPwd",
    data: sendData,
    success: function(data){
            window.location.replace(myURL);
        },
    error: function(data){
        }
});

最后,您可以运行服务器

  

node bin / www your_aws_ip

现在对我有用。希望这些能帮助你们 顺便说一句,你应该注意myURL.json的路径。