gpt4 book ai didi

javascript - 允许任何具有 sails 策略的人访问 API

转载 作者:行者123 更新时间:2023-11-30 06:22:42 25 4
gpt4 key购买 nike

我正在尝试将我的 SailsJS API 与另一个 Node 应用程序一起使用,并不断收到 403 Forbidden 响应类型。

我的操作是 scale/create-weight,它使用发布的数据创建数据库记录。

我将操作添加到 config/policies.js 以允许未登录用户访问:

//config/policies.js

module.exports.policies = {

'*': 'is-logged-in',

// Bypass the `is-logged-in` policy for:
'entrance/*': true,
'account/logout': true,
'view-homepage-or-redirect': true,
'deliver-contact-form-message': true,
'scale/create-weight': true

};

下面是我尝试从同一台计算机上的单独 Node 应用程序访问 API 的方式:

const querystring = require('querystring')
const http = require('http')

const postData = querystring.stringify({
'weight' : '10',
'units' : 'ounces',
'userId' : '5b8c16301cee97343513e184'
});

var options = {
host: "localhost",
port: 1337,
path: "/api/v1/scale/create-weight",
method: "POST",
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(postData)
}
};


const req = http.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
res.on('end', () => {
console.log('No more data in response.');
});
});

req.on('error', (e) => {
console.error(`problem with request: ${e.message}`);
});

// write data to request body
req.write(postData);
req.end();

服务器正在响应:

STATUS: 403
HEADERS: {"x-powered-by":"Sails <sailsjs.com>","content-type":"text/plain; charset=utf-8","content-length":"9","etag":"W/\"9-PatfYBLj4Um1qTm5zrukoLhNyPU\"",
"set-cookie":["sails.sid=s%3AonM7KWW6ohNoOPNiNjXy9NRFapolNavV.eZHy2P1o4WN1BvDbIWAZEsafG9RzaN1D6O%2FgaEjoLq0; Path=/; HttpOnly"],"date":"Sun, 09 Sep 2018 14:
55:58 GMT","connection":"close"}
BODY: Forbidde
BODY: n
No more data in response.

我必须做什么才能允许外部应用程序使用 API?

最佳答案

这个问题是由于 csrf 安全政策造成的。虽然完全关闭该设置并不好,但您可以在 config/routes.js 文件中以每个路由为基础对其进行管理。

我更新了路线,它起作用了:

'POST /api/v1/scale/create-weight': {
action: 'scale/create-weight',
csrf: false
},

我最终会实现 API key /API secret 安全策略,以便使用 API 的第 3 方可以通过这种方式进行身份验证。

关于javascript - 允许任何具有 sails 策略的人访问 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52245746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com