如何通过命令设置全局variables
感谢这么多快速的回应。
我使用NodeJS(v4.3.2)和ExpressJs(v4.x)来build立网站。
我用了很多AJAX和所有AJAX url指向一个静态IP(AWS服务器本身)。
因为我将部署到多个服务器,我不想单独更改AJAXurl。 我的想法是当我运行“node bin / www”命令行时,我可以将其更改为“node bin / www 50.50.50.50(我的AWS地址)”,我可以将所有的AJAX url设置为正确的IP?
这是可能的或其他替代性的溶解?
谢谢
您的问题与CORS相关:基本上,如果http://www.example1.com
未明确允许,则无法通过Ajax
从http://www.example2.com
访问域http://www.example1.com
在回应中。
这是大多数现代浏览器的“安全”function。 你不会遇到这个问题使用命令行,如curl
或铬扩展Postman
。
要解决这个问题,请确保服务器响应中的Access-Control-Allow-Origin
标头中Access-Control-Allow-Origin
请求数据的域( http://www.example2.com
)以及http动词( GET
, POST
, PUT
…或*
为每个http方法)。
这一切都归结于将以下两个标题添加到http://www.example1.com
服务器的响应:
Access-Control-Allow-Origin: http://www.example2.com Access-Control-Allow-Methods: *
编辑
按照@ Paulpro的评论,你必须重新绑定所有的URL,以便它们到达你的服务器的IP而不是你的localhost
服务器。
我解决了这个问题。
首先,在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){ } });
最后,你可以运行服务器
节点bin / www your_aws_ip
它现在适合我。 希望这些会帮助你们。
顺便说一句,你应该小心myURL.json的path。