Angular2 http与身体GET?

Cor*_*urn 6 get angular

我在Angular2网站上查询一些弹性搜索服务器.为了帮助提高安全性,我们希望锁定对GET请求的访问权限.Elasticsearch支持GET与一个正文,但我在使用Angular2的http类时遇到麻烦.

this.http.post(SearchEndpoint, q.BuildPayload(), { method: 'GET' })
Run Code Online (Sandbox Code Playgroud)

由于http.get没有body参数,我试图使用post方法.以前我会离开RequestOptionsArgs,{ method: 'GET' }POST将成功通过正文.通过在第三个参数中指定方法,http类将从请求中删除正文.

是否可以在Angular 2中使用正文发出GET请求?

Thi*_*ier 13

我认为原始XHR对象不允许这样做.引用规范(参见https://xhr.spec.whatwg.org/):

4.5.6 send()方法

客户.发送([body = null])

发起请求.可选参数提供请求正文.

如果请求方法是GET或HEAD,则忽略该参数.

send(body)方法必须运行以下步骤:

  • 如果未打开state,则抛出InvalidStateError异常.

  • 如果设置了send()标志,则抛出InvalidStateError异常.

  • 如果请求方法是GET或HEAD,则将body设置为null.

Postman github中的这个讨论也可以帮助你:https://github.com/postmanlabs/postman-app-support/issues/131.

如果要查询ElasticSearch服务器,可以使用POST请求.这是一个示例:

POST http://localhost:9200/myindex/mytype/_search?pretty=true
Content-Type: application/json

{
  "query": {
    "match": {
      "somefield": "some value"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

希望它对你有帮助,蒂埃里