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

Angularjs发帖不向Spring JWT发送报头

沃博裕
2023-03-14
$http({
        method: 'POST',
        url: SessionService.apiUrl + '/category/create',
        headers: {
          'Accept': 'application/json','Content-Type': 'application/json; 
           charset=UTF-8;', 'Authorization': 'Bearer ' + SessionService.getToken()
       },
        data: params
 })
@RequestMapping(value = "/category/create", method = RequestMethod.POST)
    public @ResponseBody
    Response add(@RequestBody CategoryBO request) {
...
}
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
                                    FilterChain filterChain) throws ServletException, IOException {
        String authorizationHeader = request.getHeader("authorization");

GET-Request标头:

Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:es-ES,es;q=0.8,en;q=0.6,pt;q=0.4
Authorization:Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJmYWJpYW4uYW5nZWxvbmkiLCJyb2xlcyI6IkFETUlOIiwiaWF0IjoxNDU5MDE5MTg0fQ.QAPZDbyavambfdK9LJUQWyzSRAuELvg_IGTjFdsm6cc
Connection:keep-alive
Host:localhost:8080
Origin:http://localhost:3000
Referer:http://localhost:3000/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36

重新搜索后报头

Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:es-ES,es;q=0.8,en;q=0.6,pt;q=0.4
Access-Control-Request-Headers:accept, authorization, content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:localhost:8080
Origin:http://localhost:3000
Referer:http://localhost:3000/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36

共有1个答案

张砚
2023-03-14

我也遇到过类似的问题,然后我意识到前端在实际执行http.options请求之前触发了一个预飞行请求。更多信息请参见

这样的请求将没有授权令牌,因此对控制器的访问将失败。最自然的解决方案是通过传递所有选项请求来设置应用程序的安全性。

这是可以做到的

    null
 类似资料:
  • 我已经将“mytest.html”发送到IIS上,这个项目由WebApi Angularjs组成,我无法获得对我的WebApi的正确请求……我不知道为什么? 超文本标记语言代码 【WebApi代码】 [模型代码] 【注册代码】 请注意,我的google chrome控制台中的错误是: 有棱角的js:10695职位http://localhost:60031/api415(不支持的媒体类型) 我也尝

  • 但是,有没有一种方法可以使用$http.post()来实现这一点?我是否必须始终包含头部才能使其工作?我相信上面的内容类型指定了发送数据的格式,但是我可以将它作为javascript对象发送吗?

  • 问题内容: 谁能告诉我以下语句为什么不将帖子数据发送到指定的URL?调用了url,但是在打印$ _POST时在服务器上- 我得到一个空数组。如果我在将消息添加到数据之前在控制台中打印消息-它显示正确的内容。 我也尝试过将数据作为字符串(具有相同的结果): 当我以以下格式使用它时,它似乎可以正常工作: 但是有没有办法用$ http.post()做到这一点- 我是否总是必须包含标头才能使其正常工作?我

  • 我的第一个Vertx Web应用程序: 我希望得到索引。本地主机上的html。8080/Test然后找到一种方法来检索数据,但页面没有显示 我有一个RequestResponseExample类: 和我的Html代码index.html

  • 问题内容: 对于特定的用例,我必须以“旧方式”提交单个表单。意思是,我使用带有action =“”的表单。响应已流式传输,因此我不会重新加载页面。我完全知道,典型的AngularJS应用程序不会以这种方式提交表单,但是到目前为止,我别无选择。 也就是说,我尝试从Angular填充一些隐藏字段: 请注意,显示的是正确的数据值。 该表格看起来像一个标准表格: 如果我点击了提交,则没有值发送到服务器。如

  • 对于一个特定的用例,我必须以“老方法”提交一个单一的表单。意思是,我使用带有action=“”的表单。响应是流式的,所以我不会重新加载页面。我完全知道一个典型的AngularJS应用程序不会以这种方式提交表单,但到目前为止我没有其他选择。 话虽如此,我试着从Angular填充一些隐藏的字段: 请注意,数据中的正确值已显示。 表单看起来像标准表单: 如果点击submit,则不会向服务器发送任何值。如