javascript - 如何从 ajax 调用中模拟 501 错误

标签 javascript jquery http

我从这个调用中得到了一个 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&#58;&#47;&#47;demo&#46;site&#46;com&#47;serviceName&#47;v1&#47;requests&#47;9305e338&#45;666a&#45;e611&#45;8516&#45;000c291891bb not supported.<P>
Reference&#32;&#35;8&#46;f0fd717&#46;1472154919&#46;9959c96
</BODY></HTML>

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

fiddler 说:

服务器:AkamaiGHost
Mime 版本:1.0
内容类型:文本/html
内容长度:350
过期时间:2016 年 8 月 25 日星期四 20:21:49 GMT
日期:2016 年 8 月 25 日星期四 20:21:49 GMT
连接:关闭

最佳答案

We suspect that the API is not being hit at all, blocked by a firewall.

从错误来看,您似乎正在访问未针对该请求类型配置的后端。

假设您也控制后端,请查看这些问题以获得潜在的解决方案。

Does tomcat support http PATCH method?

How do I stop Apache httpd from rejecting HTTP PATCH requests?

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

@Controller
MyController {

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

关于javascript - 如何从 ajax 调用中模拟 501 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39154047/

相关文章:

javascript - 使用过滤器和映射将字符串数组解析/转换为整数

jquery - 如何使用 CSS 创建 + 按钮?

xcode - cocoa - 应用程序架构

javascript - Meteorjs : HTTP. get 正在检索数据,但没有向辅助函数变量返回任何内容

javascript - Angular 2 - 如何在 addEventListener 处理函数中调用 typescript 函数?

javascript - Node.js 中的 Promise 链

javascript - 文本 Angular 不会加载 angularjs 中的单元格边框

javascript - 如何在 Ajax 响应时执行 javascript?

javascript - 按住 Shift 键的同时按下箭头键

node.js - 从 MJPEG 流中提取 JPEG 并通过 websocket 发布 base64 编码图像