如何从ajax调用模拟501错误

我有一个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消息:

  Unsupported Request  

Unsupported Request

PATCH to http://demo.site.com/serviceName/v1/requests/9305e338-666a-e611-8516-000c291891bb not supported.

Reference #8.f0fd717.1472154919.9959c96

我们怀疑API根本没有受到攻击,被防火墙阻止。 我不知道在这种情况下我是否应该期待一个字符串或对象? 如果是object,那么该对象的成员是什么?

提琴手说:

服务器:AkamaiGHost
哑剧版:1.0
内容类型:text / html
内容长度:350
到期日:2016年8月25日星期四20:21:49 GMT
日期:2016年8月25日星期四20:21:49 GMT
连接:关闭

我们怀疑API根本没有受到攻击,被防火墙阻止。

从错误中,看起来您正在点击未针对该请求类型配置的后端。

假设您也控制了后端,请参阅这些问题以获得可能的解决方案。

tomcat是否支持http PATCH方法?

如何阻止Apache httpd拒绝HTTP PATCH请求?

如果您确实控制了后端,但上面没有帮助,请确保您的控制器function支持该请求方法。 例如,在Spring中,您必须明确声明:

 @Controller MyController { @Requestmapping(value = "/api/patchTheThing", method=RequestMethod.PATCH) @ResponseBody String patchTheThing(....) { ... } } 

只需在您选择的服务器上设置端点,并使用您选择的Web服务器配置或编码语言发出501响应。 但问题似乎很清楚,服务器不期望PATCH请求。 如果你有一些网络问题,你根本就不会得到回应。

您应该强烈考虑确保您的JavaScript代码处理快乐路径/成功结果以及其他类型的服务器响应结果,以便您的应用程序可以更好地处理它想要从这些错误中恢复的方式。