我从后端有一个api,如果我直接在浏览器中访问url,我可以正确看到响应,但是如果我用Ajax加载它,我总是会遇到502 Bad Gateway
错误。
页面和API位于同一个域中:http://xx.com
和http://xx.com/api
。
这真的很奇怪,怎么可能发生?
更新:我进一步探索了一下,发现即使var img = new Image(); img.src = url;
出现502错误。
答案 0 :(得分:1)
正如this page有用地解释的那样,“上游服务器和网关/代理不同意交换数据的协议。”在这种情况下,这可能会发生,因为您的Ajax请求指定了不同的标头(例如不同的“Accept”标头),导致在您的代理和实际后端之间交换不同的实体类型(即正文)。我建议使用像Firebug或Chrome调试器这样的工具来检查常规请求和Ajax请求的详细信息,查找重大差异,并根据需要向Ajax请求添加标头以获得所需的结果。