Javascript 如果只有本地Angular应用程序调用控制器,则执行路由
我有几个API路由,只有应用程序本身(Javascript 如果只有本地Angular应用程序调用控制器,则执行路由,javascript,angularjs,node.js,express,Javascript,Angularjs,Node.js,Express,我有几个API路由,只有应用程序本身(controller.js)应该可以访问。有没有办法使用IP地址(可能由于欺骗而不安全)来限制谁使用api的这一部分 服务器大小(Server.js) 客户端(controller.js) 默认情况下,您的浏览器不允许您进行跨站点HTTP请求,因为这些请求是HTTP的主题 注意: 特别是,这意味着使用XMLHttpRequest的web应用程序 只能向加载它的域发出HTTP请求,并且 不适用于其他域 这意味着在您的情况下,只有api的同一域中的js才能访问它
controller.js
)应该可以访问。有没有办法使用IP地址(可能由于欺骗而不安全)来限制谁使用api的这一部分
服务器大小(Server.js)
客户端(controller.js)
默认情况下,您的浏览器不允许您进行跨站点HTTP请求,因为这些请求是HTTP的主题 注意: 特别是,这意味着使用XMLHttpRequest的web应用程序 只能向加载它的域发出HTTP请求,并且 不适用于其他域 这意味着在您的情况下,只有api的同一域中的js才能访问它们 如果我想将API的使用扩展到其他域怎么办? 在这种情况下,您必须在后端api中设置
accesscontrolalloworigin
头
一些例子:
如果你想调试这种行为,你可以打开firebug并检入你请求的标题
参考文献:我认为使用GET参数是最简单的方法 js(express) 棱角的
$http.get("/api/specs", {
params: { whois: "yourUniqueName" }
});
为每个API定义唯一的名称。
并设置服务器仅在客户端发送正确名称时返回响应
服务器返回404,除非您将yourUniqueName
作为查询参数whois
传递
/api/specs?whois=yourUniqueName
okay
你可能误解了他问的问题。嗯,suish,也许你是对的,我现在注意到控制器的部分;但是IP的那部分暗示我这是与域名有关的。你将如何重新表述他的问题?
// Cross-site HTTP requests from http://siteA.com
Access-Control-Allow-Origin: http://siteA.com
// Cross-site HTTP requests from all
Access-Control-Allow-Origin: *
app.get("/api/specs",function(req,res){
var queryParam = url.parse(req.url,true).query
if(queryParam.whois == "yourUniqueName"){
res.send("okay");
}else{
res.status(404);
res.send("NG");
}
});
$http.get("/api/specs", {
params: { whois: "yourUniqueName" }
});
/api/specs?whois=yourUniqueName
okay
/api/specs?whois=otherName
/api/specs?otherParam=something
/api/specs
NG