webApi 正在使用 headers 请求,如何获得响应

webApi is using headers request,how to get the response

url 是 'http://..*/api/v2/******/slide-ads?role=C&showType=app&type=activity'

方法是'get'

headers 设置

            key 'appVer'


          value   '4.0.0'

如果我使用邮递员

您可以获得 JSON object,

但是使用 fetch 或 jquery,我无法得到响应!

var vheaders = {
  "appVer": "4.0.0"          
};
fetch(URL, {
    method: "GET",
    headers: vheaders
})
.then(res => res.json())
.then(data => console.log(data))
.catch(e => console.log("Oops, error", e))

服务器返回的响应是错误信息:

$ curl -i -H "Origin: http://example.com" \
'http://123.56.230.49/api/v2/freekeers/slide-ads?role=C&showType=app&type=activity'
HTTP/1.1 422 Unprocessable Entity
Server: nginx/1.8.0
Date: Mon, 31 Jul 2017 20:30:23 GMT
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive

{"code":"0000","message":"请求无法获取当前版本号"}

注意 HTTP/1.1 422 Unprocessable Entity.

中文翻译为“Couldn't get the current version number.”

并且该错误响应也不包括 Access-Control-Allow-Origin 响应 header,因此您的浏览器将不允许您的前端 JavaScript 代码访问响应 body.

对于 cross-origin 请求,CORS 协议要求浏览器禁止从前端代码访问响应主体,除非响应中包含 Access-Control-Allow-Origin

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS 有更多详细信息。