gpt4 book ai didi

javascript - $http.get 不在请求正文中发送数据

转载 作者:行者123 更新时间:2023-11-29 21:07:52 27 4
gpt4 key购买 nike

使用 angular v1.3.1 我遇到了一个奇异的以下问题,试图实现一个 facade 来向 Web 应用程序后端的 REST + JSON 接口(interface)发出 http 请求。

我在代码中得到了这样的东西:

findSomething(value: number): ng.IPromise<api.DrugIndication[]> {
const getParams = { 'param' : 'value' };
const config:ng.IRequestShortcutConfig = {
headers: {
"Content-Type" : "application/json"
},
data: getParams
}
return this.$http.get(url,config);
}

当需要调用它时,我收到了一个 400 Bad Request(顺便说一句:乐队的好名字!)因为后端(使用 Play for Scala 制作)立即拒绝了请求。因此,在请求中进行检查后,我发现请求/消息正文中没有发送任何数据。

那么我如何使用 Angular “$http.get”在正文和 HTTP Get 请求中发送一些数据?

附加信息:如果我从 ubuntu shell 使用 curl 命令发出请求,这不会发生。所以可能是 Chrome 和 angular.js 之间的问题

最佳答案

如果您检查 chrome 开发工具中的网络选项卡,您会看到这是一个飞行前的 OPTIONS 请求(跨域资源共享 (CORS))。

你有两种方法来解决这个问题。

  1. 客户端(这需要你的服务器不需要application/json值)

    • 仅限 GET、POST、HEAD 方法
    • 仅浏览器设置 header 加 these
    • Content-Type 只有:
      • 应用程序/x-www-form-urlencoded
      • 多部分/表单数据
      • 文本/纯文本
  2. 服务器端

    • 在您的服务器框架上设置类似这样的中间件:

      if r.Method == "OPTIONS" {
      w.Header().Set("Access-Control-Allow-Origin", "*")
      w.Header().Set("Access-Control-Allow-Methods", "GET")
      w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Authorization")
      w.Header().Set("Access-Control-Max-Age", "86400") // firefox: max 24h, chrome 10min
      return
      }

针对您的特定框架 this应该工作

关于javascript - $http.get 不在请求正文中发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43103406/

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