2017-02-20 28 views
1

Я попытался отправить некоторые методы post из моего javascript-файла, но что-то пошло не так, и скрипт не работает. Мой html файл:Отправить запрос jquery как Postman

<html> 
    <head> 
    <script src="https://code.jquery.com/jquery-1.9.1.min.js"></script> <script> 
    $(document).ready(function() { 
     var request = $.ajax({ 
      method: "POST", 
      url: "http://localhost:8081/login", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      data: { username: "John", password: "Boston" } 
     }) 
     .done(function(msg) { 
      alert("Done: " + msg); 
     }) 
     .fail(function(jqXHR, textStatus) { 
      alert("Request failed: " + textStatus); 
     }); 
    }); 
    </script> 
    </head> 
    <body> 
    </body> 
</html> 

Я использую spring-boot для сервера и хотите проверить разрешение с помощью JWT. Так что я overided attemptAuthentication метода из AbstractAuthenticationProcessingFilter класса:

@Override 
public Authentication attemptAuthentication(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) 
     throws AuthenticationException, IOException, ServletException { 
    String contentType = httpServletRequest.getContentType(); 
    String headerPart = httpServletRequest.getHeader("Accept"); 
    String body = httpServletRequest.getReader().lines().collect(Collectors.joining(System.lineSeparator())); 
    AccountCredentials credentials = new ObjectMapper().readValue(httpServletRequest.getInputStream(),AccountCredentials.class); 
    UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(credentials.getUsername(), credentials.getPassword()); 
    return getAuthenticationManager().authenticate(token); 
} 

если я посылаю запрос от html файла body и contentType пустуют и headerpart является text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Однако, когда метод запроса отослан из Почтальон - все отлично работает (поэтому contentType - text/plain;charset=UTF-8 и body - {"username":"admin","password":"admin"}), вот моя конфигурация почтмана:

enter image description here

Возможно, что я что-то не понял, но понятия не имею, почему мой запрос jquery не совпадает. Есть ли какие-либо решения для этого?

+0

Вы можете попробовать использовать тип данных запроса Ajax как DATATYPE: «текст» вместо DATATYPE: «JSon» .The типа данных, которые вы ожидали назад от сервер. – Avi

+0

Я пробовал, но это не помогло – littlewombat

ответ

0

Успешные запросы почтальона указывают, что ваш бэкэнд правильно настроен. Возможно, ваши методы запроса могут быть ошибочными. Удалите привязку переменной, которую вы используете в строке 5.

JQuery AJAX syntax вот ссылка на аналогичный вопрос. https://www.w3schools.com/jquery/ajax_ajax.asp ссылка на школьные школьные школы w3.

Ваш код должен выглядеть следующим образом:

$(document).ready(function() { 
    $.ajax({ 
     method: "POST", 
     url: "http://localhost:8081/login", 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     data: { username: "John", password: "Boston" } 
    }) 
    .done(function(msg) { 
     alert("Done: " + msg); 
    }) 
    .fail(function(jqXHR, textStatus) { 
     alert("Request failed: " + textStatus); 
    }); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^