我在这次通话中冒出了一个http 501错误:
return $.ajax({
url: finalUrl,
success: function (result) {
console.log('success call result');
console.log(result);
finalResult = result;
},
data: JSON.stringify(data),
type: 'PATCH',
contentType: 'application/json'
});
如何返回模拟错误的模拟,以便我可以在生产之外测试修复?我查看了chrome中的响应选项卡,我看到了一条HTML消息:
<HTML><HEAD>
<TITLE>Unsupported Request</TITLE>
</HEAD><BODY>
<H1>Unsupported Request</H1>
PATCH to http://demo.site.com/serviceName/v1/requests/9305e338-666a-e611-8516-000c291891bb not supported.<P>
Reference #8.f0fd717.1472154919.9959c96
</BODY></HTML>
我们怀疑API根本没有受到攻击,被防火墙阻止。我不知道在这种情况下我是否应该期待一个字符串或对象?如果是object,那么该对象的成员是什么?
菲德勒说:服务器:AkamaiGHost
哑剧版:1.0
内容类型:text / html
内容长度:350
到期日:2016年8月25日星期四20:21:49 GMT
日期:2016年8月25日星期四20:21:49 GMT
连接:关闭
答案 0 :(得分:0)
我们怀疑API根本没有遭到攻击,被防火墙阻止。
从错误中看,您正在点击未针对该请求类型配置的后端。
假设您也控制了后端,请参阅这些问题以寻找可能的解决方案。
Does tomcat support http PATCH method?
How do I stop Apache httpd from rejecting HTTP PATCH requests?
如果您确实控制了后端,但上面没有帮助,请确保您的控制器功能支持该请求方法。例如,在Spring中,您必须明确声明:
@Controller
MyController {
@Requestmapping(value = "/api/patchTheThing", method=RequestMethod.PATCH)
@ResponseBody String patchTheThing(....) {
...
}
}
答案 1 :(得分:0)
只需在您选择的服务器上设置端点,然后使用您选择的Web服务器配置或编码语言发出501响应。但问题似乎很清楚,服务器不期望PATCH请求。如果你遇到网络问题,你根本就不会得到回应。
您应该强烈考虑确保您的JavaScript代码处理快乐路径/成功结果以及其他类型的服务器响应结果,以便您的应用程序可以更好地处理它想要从这些错误中恢复的方式。