当前位置: 首页 > 知识库问答 >
问题:

当Postman工作时,Ajax请求不断失败,请求错误

夏侯腾
2023-03-14

所以我已经研究了好几个小时,尝试了不同的东西,研究了好几个小时都没有结果。调用是在提供user和pass之后获取JWT令牌。

function listenForLogin() {
    console.log('listening')
    $('#submit-btn').on('click', e => {
    e.preventDefault();
    console.log('button-pressed');

    const username = $('#user-input').val().trim();
    const password = $('#pass-input').val().trim();

    var user = {}
    user.username = username;
    user.password = password
    console.log(user);
    $('#user-input').val('');
    $('#pass-input').val('');

    authenticateUser(user);
});
}



//send to autenticate
function authenticateUser(user) {
    console.log('trying to authenticate');
    const settings = {
        url:"/api/auth/login",
        data: JSON.stringify(user),
        dataType: "json",
        method:"POST",
        success: (data) => {
            console.log('authenticated user');
            redirectWithToken(data.authToken, user);
        },
        error: (err) => console.log(err)
    }
    $.ajax(settings);

} 

当它到达服务器时,morgan看到有一个请求,但我得到的状态是400。这是我的路线

'use strict';

const express = require('express');
const passport = require('passport');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
const {JWT_SECRET, JWT_EXPIRY} = require('dotenv').config();

const router = express.Router();

const createAuthToken = function(user) {

  return jwt.sign({user}, 'shade', {
    subject: user.username,
    expiresIn: '7d',
    algorithm: 'HS256'
  });
};

const localAuth = passport.authenticate('local', {session: false});

router.use(bodyParser.json());

router.post('/login', localAuth, (req, res) => {
  const authToken = createAuthToken(req.user.serialize());
  res.json({authToken});
});

const jwtAuth = passport.authenticate('jwt', {session: false});

router.post('/refresh', jwtAuth, (req, res) => {
    console.log('refresh targeted');
    const authToken = createAuthToken(req.user);
    res.json({authToken});
});

router.get('/dashboard/:user', jwtAuth, (req, res) => {
    res.redirect(`https:flow-state.herokuapp.com/dashboard/${req.params.user}`);
})

module.exports = router; 

我很难理解护照是怎么回事。authenticate('localAuth')起作用,因此这是我的策略文件,以备需要

更新:我在检查fiddler上的请求时遇到了某种错误。

~标题~:132 ~???~:11

有人知道那是什么意思吗?

共有2个答案

隗锐进
2023-03-14

8个小时后,一个头痛的大问题解决了@vignz。pie你是对的,但我需要在标题中发送“Content Type”:“application/json”,并将数据设置为strigify processData:false。谢谢你的帮助!

function listenForLogin() {
    console.log('listening')

    $('#submit-btn').on('click', e => {

    e.preventDefault();
    console.log('button-pressed');

    const username = $('#user-input').val().trim();
    const password = $('#pass-input').val().trim();

    $('#user-input').val('');
    $('#pass-input').val('');

    authenticateUser(username, password);

    });
}



//send to autenticate
function authenticateUser(user, pass) {
    var info = {
        username: user,
        password: pass
    };
    console.log(info)
    const settings = {
        url:"/api/auth/login",
        headers: {
            "Content-Type": "application/json" 
        },
        data: JSON.stringify(info),
        processData: false,
        dataType: "json",
        method:"POST",
        success: (data) => {
            console.log('authenticated user');
            redirectWithToken(data.authToken, user);
        },
        error: (err) => console.log(err)
    }
    $.ajax(settings);

}
颜楚青
2023-03-14

您是否错过了ajax设置中的内容类型?在ajax设置中添加contentType:“application/json”,然后重试。

注:

数据类型定义服务器响应的预期数据类型。

定义将发送到服务器的内容的数据类型。默认值为:“application/x-www-form-urlencoded”

 类似资料:
  • 在简单的我的表单,我想使用ajax与和获取和发布请求后,使用和提交表单我的页面是刷新和警报不工作的控制器验证。 控制器中的简单请求ajax无法正常工作 我的形式: 我的控制器: 我的路线:

  • 我将GET请求发送到具有相同标头的相同endpoint,包括承载,但当我从Postman调用时得到200和正确的JSON,当我在我的(Vue)项目中使用Axios发送请求时,我得到302。 运行在localhost:8080(如果有用)上的本地项目的调用如下: 而在《邮递员》中,我所做的就是用相同的url创建一个GET请求,我在标题中添加的只是“承载者…” 我从axios得到的错误是: 响应状态是

  • 我正在开发一个脚本,以访问图形API阅读我们的广告中的所有用户。我正在通过以下方式使用AXIOS执行一个请求: 然而,这失败了,因为: client_id=535FB089-9FF3-47B6-9BFB-4F1264799865&scope=https%3a%2f%2fgraph.microsoft.com%2f.default&client_secret=qwgdyamab0yskul1qkv5

  • HTTP/1.1 408 REQUEST_TIMEOUT内容-长度:0连接:关闭 已关闭 --------------------------------------------------------------------------------------- 它会导致请求超时。如果我使用curl命令,它是成功的。 请求超时的原因是什么?

  • 和错误处理方法为: customer.java(模型): json数据: 我可以捕获HttpMessageNotReadableException并进行处理。 错误处理已更改的方法。 但是,继承来创建基类或在所有控制器中编写这段代码感觉我没有看到spring的设计概念,因为它决定在那里处理以创建一个新的ExceptionResolver。 谢谢,