gpt4 book ai didi

javascript - jquery post 方法不起作用(403 - 禁止)

转载 作者:行者123 更新时间:2023-11-28 01:08:55 26 4
gpt4 key购买 nike

$.get() 在我的代码中有效,但 $.post() 无效。使用相同的代码...当我使用 $.post() 我的代码无法到达 Controller 。我正在使用 MVC(Sails.js)。我几乎阅读了每一期和文件。但我找不到任何理由。

html

<div id="login-form-panel" class="form-login">   
<form id="login-form" role="form">
<legend><h1>Login in..</h1></legend>

<input type="text" id="username" placeholder="User name" data-clear-btn="true" autocomplete="off" title="User name" autofocus required />

<input type="password" id="password" placeholder="Password" data-clear-btn="true" autocomplete="off" title="Password" required />

<input type="submit" id="btn-form-login" class="btn btn-primary btn-lg btn-block" style="margin-top:17px" value="Login">
</form>
</div>

js

   // $('body').on('click', '#btn-form-login', function() {
$("#login-form").submit(function(e){
username = $("#username").val();
password = $("#password").val();

if(!console) {
console = {};
console.log = function() {};
}
console.log(username + " " + password);

$.post(
'/user/login',
{ username: username, password: password },
function(res) {
$.session.set('username', username);
$.session.set('password', password);
window.location = res;
},
"json"
)
.fail(function(xhr, statusText, error){
alert(xhr.status);
});

e.preventDefault();

});

Controller

module.exports = {

login: function(req, res) {

console.log("controller works..");

// To use mongo native query
User.native(function(err, collectionUser) {

if(err) { return err; };
if(!collectionUser) { return err; };

collectionUser
.find({'username' : req.param('username')})
.nextObject(function (err, user) {

if(err) {
console.log('db error');
res.send(500, 'db error');
return err;
};

if(!user) {
console.log('username error');
res.send(404, { error: 'username error'});
};

if(user) {
if(user.password === req.param('password')) {

// Log user in
req.session.authenticated = true;
req.session.User = user;

var oldDateObj = new Date();
var newDateObj = new Date(oldDateObj.getTime() + 3600000);
req.session.cookie.expires = newDateObj;

user.online = true;

collectionUser.save(user, {w: 1}, function(err, user_id) {

if(err) {
res.send(500, 'There is an error when accessing db\n' + err);
}

// Inform other sockets
User.publishUpdate(user_id, {
loggedIn: true,
id: user._id,
name: user.username,
action: ' giriş yaptı.'
});

res.send("/user/show/" + user['_id']);
});

} else {
console.log('password error');
res.send(400, 'password error');
//res.redirect('/');
}

};

});
});
},
}

最佳答案

解决方案

1- 将 Sails 的跨站点请求保护配置为使用 POST 方法 - 正如 Zieaglar 上面所述。因此;

首先转到 config/csrf.js 并将 bool 值更改为 false。和其次将以下代码添加到您的表单标签中

<input type='hidden' name='_csrf' value='<%= _csrf %>'>

2- 删除 POST 方法中的 dataType 部分 - “json”

关于javascript - jquery post 方法不起作用(403 - 禁止),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24728736/

26 4 0
文章推荐: javascript - 工具提示隐藏在父元素中
文章推荐: c++ - .lib 链接其他 .libs
文章推荐: javascript - 如何将 smooth-scrollbar 与其他插件对齐?
文章推荐: javascript -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com