javascript - 如果只有本地 Angular 应用程序调用它为真 Controller ,则执行路由

标签 javascript angularjs node.js express

我有一些只有应用程序本身 (controller.js) 应该可以访问的 API 路由。有没有办法使用 IP 地址(可能由于欺骗而不安全)来限制谁使用这部分 api?

服务器大小 (server.js)

app.get("/api/specs",function(req,res){
    // Only the app should have access to it, not external entities
    res.json({used:getUsed()});
});

客户端(controller.js)

$http.get('/api/specs').success(function(specs,code){
    console.log(specs);
});

最佳答案

默认情况下,您的浏览器不允许您发出跨站点 HTTP 请求,因为是 same origin policy 的主题。 .

注意:

In particular, this meant that a web application using XMLHttpRequest could only make HTTP requests to the domain it was loaded from, and not to other domains.

在您的情况下,这意味着只有与您的 api 相同域中的 js 才能访问它们。

如果我想将 API 的使用扩展到其他域怎么办?

在这种情况下,您必须在后端 api 中设置 Access-Control-Allow-Origin header 。

一些例如:

// 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: *

如果您想调试此行为,您只需打开 Firebug 并在网络中检查您的请求 header 即可。

引用资料:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

关于javascript - 如果只有本地 Angular 应用程序调用它为真 Controller ,则执行路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30227164/

相关文章:

javascript - 如何使用 Angular 工厂从rest api返回http get请求?

javascript - 从一个函数内部的 request.get 返回变量值到另一个 NODEJS 表达式

javascript - 如何从 php echo 调用 javascript 函数?

javascript - 如何将外部 util 类包含并内联到主 TypeScript 应用程序中?

javascript - AngularJS 查询参数

node.js - npm installexpress 不获取node_module

node.js - 带 Node 的 AWS Lambda - 将文件保存到 Lambda 的文件系统中

javascript - jQuery:在文本区域段落中查找单词并将其替换为单词

javascript - AngularJS:未捕获错误:[$rootScope:infdig] 达到 10 次 $digest() 迭代

javascript - 停止 AngularJS promise 链