我可以在浏览器中看到API响应但不能使用Ajax,为什么?

时间:2012-09-03 04:18:33

标签: javascript ajax api

我从后端有一个api,如果我直接在浏览器中访问url,我可以正确看到响应,但是如果我用Ajax加载它,我总是会遇到502 Bad Gateway错误。

页面和API位于同一个域中:http://xx.comhttp://xx.com/api

这真的很奇怪,怎么可能发生?

更新:我进一步探索了一下,发现即使var img = new Image(); img.src = url;出现502错误。

1 个答案:

答案 0 :(得分:1)

正如this page有用地解释的那样,“上游服务器和网关/代理不同意交换数据的协议。”在这种情况下,这可能会发生,因为您的Ajax请求指定了不同的标头(例如不同的“Accept”标头),导致在您的代理和实际后端之间交换不同的实体类型(即正文)。我建议使用像Firebug或Chrome调试器这样的工具来检查常规请求和Ajax请求的详细信息,查找重大差异,并根据需要向Ajax请求添加标头以获得所需的结果。