问题标签 [http-status-code-406]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1232 浏览

spring - Spring Controller 向客户端发送图像导致 406

我正在尝试根据请求将图像发送到前端,如果我将它作为 JSON 的一部分放入请求正文中,它可以工作,但我想使用图像/png,更有意义,但是当我尝试时得到 406那。

控制器:

测试(客户端):

我错过了什么?

0 投票
1 回答
1358 浏览

curl - 将 curl 转换为 Coldfusion cfhttp

我有一个像魅力一样的 curl 调用:

curl -X POST -H 'Content-Type: application/xml' -H "X-ApiVersion: 1.0" -H "X-AccessToken: [api-token]" -d '[xml]' https://www.API.com

我试图将其转换为coldfusion,但服务器在我身上踢回了406错误。我已经尝试将我能想到的所有东西都扔到这个问题上,但无法让它发挥作用。任何帮助表示赞赏!这是CF:

0 投票
1 回答
881 浏览

javascript - 406 response with a $.post request jQuery to external PHP

I'm trying to post large amounts of text via $.post in jQuery and getting a 406 response. It works fine under around 300 characters. Below is my code:

index.php

html

jQuery

store.php

.htaccess

Getting the following response: http://i.stack.imgur.com/MUZpX.png

Have also tried with a local form submit, but it would also bring up a bad request.

Note: All whitespace and formatting is preserved when stored, and that is intentional

If anyone could help me out that would be great, thanks :)

0 投票
2 回答
618 浏览

spring - .com 电子邮件地址的获取请求失败,因为 Spring 将其解释为扩展

(见下面的编辑部分 20.08.2015)

我最近遇到了类似的问题(Get request 仅适用于斜杠(spring REST annotations)),解决方案是在 @RequestMapping 的值中添加一个正则表达式(另见Spring MVC @PathVariable getting truncated)。

但现在我们意识到问题仍然存在,但仅限于以 .com 或 .org 结尾的电子邮件地址。这很奇怪。

不久,我使用 Spring Annotations 构建 REST 服务。我有一个带有三个参数的 GET 请求,最后一个是电子邮件。

我的控制器:

如果我打电话: http://myserver:8080/myresource/value1/value2/value3

value3= email@domain.de / co.uk / .name / .biz /.info,完全没有问题。

但是对于某些顶级域(到目前为止.com、.org),我收到 Http 状态代码 406(不接受)。

如果我添加一个斜杠,它会起作用:

http://myserver:8080/myresource/value1/value2/value3/

由于我们使用 swagger 并且 swagger 不添加斜杠,因此添加斜杠不是一种选择。

什么可能导致这个问题?

我使用了一个扩展 ResponseEntityExceptionHandler 的 ErrorHandler。我调试了一下,发现抛出了HttpMediaTypeNotAcceptableException(“找不到可接受的表示”)。但我还不知道是谁在扔它以及为什么。


编辑

我发现路径http://myserver:8080/myresource/value1/value2/myemail@somewhere.com

被解释为文件,而“com”是媒体类型“application/x-msdownload”的文件扩展名,因此在 Spring 的类 ProducesRequestCondition.ProduceMediaTypeExpression 方法 matchMediaType 中的“getMediaType().isCompatibleWith(acceptedMediaType)”行失败,因为实际产生的媒体类型是“application/json;charset=UTF-8”,而不是“application/x-msdownload”。

所以问题变成了:我怎样才能让 Spring 理解,.com 不是文件扩展名?

0 投票
0 回答
2988 浏览

angularjs - 如何将 json 从 spring-mvc 控制器发送到 angularjs

我正在尝试使用 angularjs 和 spring mvc restful web 服务开发一个简单的应用程序。首先,我必须加载索引文件,它会在其中进行 http 调用http://localhost:8088/angular/demo以从服务器获取一些 json 数据。但是我得到了一个 406 不可接受的错误。

在此处输入图像描述

控制器中的第一个方法,我已经编写了加载主页,第二个方法应该以 JSON 格式响应用户信息。

在同一个控制器中有一个返回 modelAndView 的方法和另一个返回数据的方法是错误的吗?如果我只使用在控制器中提供 JSON 数据的方法,那么我应该如何加载第一页?我已经在 lib 文件夹中包含了所有必需的库。

在此处输入图像描述

在 index.jsp 我有:

控制器是:

资源表示类是:

网页.xml:

角-servlet.jsp:

0 投票
1 回答
11434 浏览

jquery - 加载资源失败:服务器响应状态为 406(不可接受)

我在浏览器控制台日志中收到此错误,包括 chrome 和 firefox

GET doaminipaddress.port/n/d85639d2ff510307eedab9f654a0d8a4.js?q=y52W3GiXHD…886&url=http%3A%2F%2domain.net%2Fassets%2Fscripts%2Fjquery.min.js 406(不接受)

但是 jQuery 就在与其余 JS 文件的文件夹中

406 错误

如果我直接在浏览器中打开 jQuery,它会正确打开。

我试过了

  1. 从绝对路径改变
  2. 重命名的脚本文件夹
  3. 检查所有标签正确关闭
  4. 标题部分已选中,但如果您想查看

标题部分

我在 SO 上检查了与错误相关的相同问题,但是他们在使用框架或使用 Ajax 时遇到了这个问题,但我没有使用任何框架,奇怪的行为是有时它只是正确加载,我完全不知道为什么它会给出错误和下一次刷新尝试,jQuery 加载正确。

0 投票
2 回答
3804 浏览

asp.net - 如何绕过 IIS 中的 Accept 标头验证?

我有一个托管在 ASP.Net 上的Nancy网站,其中包含许多自定义路由。这些路由包括看起来像文件路径(例如/path/to/xml_file.xml)的映射,但会解析为应该在浏览器中显示的 HTML 文件。对于大多数文件,这可以正常工作。但是,对于 XML 文件(可能还有其他 mime 类型),我从 IIS 8 Express 收到 406.0 HTTP 错误,明确指出

HTTP 错误 406.0 - 不可接受

无法显示资源,因为您的浏览器不接受文件扩展名。

请求被拒绝,因为它包含请求的文件扩展名不支持的 MIME 类型的 Accept 标头。

验证请求的文件扩展名的 MIME 设置,以确保此 MIME 类型是可接受的。

406错误页面截图

是否有任何 web.config 设置或其他技术可以绕过此验证,以便在无需重写路径逻辑的情况下不会收到此错误?我的谷歌搜索失败了。例如,我发现这个 IIS 论坛帖子链接自SO Answer,其中谈到

将所有请求映射到 ASP.NET 并使用 ASP.NET 的 StaticFileHandler 为它们提供服务

但是,该帖子没有解释如何执行此操作;它似乎也不适用。

编辑:(上面添加了错误页面图片)

作为另一个花絮,Nancy 路由返回表单的显式视图

因此,应该绕过内容协商。

0 投票
1 回答
497 浏览

java - Spring MVC + RestController 为资源提供 406

我正在为一个小型休息应用程序配置我的项目。我正在使用 Spring 4.2.2.RELEASE 当我创建一个使用 @RestController 注释的控制器或添加 @ResponseBody 时出现问题。css 或 js 资源只是停止工作并发送错误 406 Not aceptable。我读到这是由于消息转换器造成的,但我仍然有问题。

提前致谢

我的配置。

弹簧配置:

控制器

如果我从 EmpresaApiController 中注释函数 listAll,它就可以正常工作。但是如果我添加它,css和js就不起作用。

0 投票
1 回答
3329 浏览

rest - spring mvc rest 协议缓冲区 http 406 不可接受的错误

我正在使用带有 REST 支持的 Spring MVC 4.1.5,试图让 Web 服务使用 google 协议缓冲区消息格式。我看到很多帖子都提到了 JSON 格式的这个问题,但没有提到谷歌协议缓冲区格式的问题。此外,我没有看到 Spring 框架文档有用于 protobufs 的 MediaType(更多内容见下文)我的代码发布在github 上

这是我的控制器代码(使用或不使用 products="application-xprotobuf" 没有区别 - 相同的 406 不可接受的错误)

这是我的 web.xml

这是我的 pom.xml,请注意,我确实在此处添加了 google protobuf 库,它们最终位于已部署的 .war 文件的 WEB-INF/lib 文件夹中。

这是我的测试客户

当我使用 mvn test 从命令行运行客户端时,出现以下错误

我看到有人建议使用 contentNegotiationManager

在我的 rest-servlet.xml 我有 mvc:annotation-driven 标签

我还在演示包中放入了 webConfig.java

无论有没有 webconfig.java(它正在做 contentNegotationManager 的工作),我都会得到 406 not Acceptable 错误。

我无法在 Spring 4.1.3 甚至4.2.3 jars中找到 MediaType.APPLICATION_XPROTOBUF 。

所以我把这个值留给了 MediaType.ALL (我认为这应该有效?)

当我运行测试客户端时,我在实际运行测试之前收到此消息..

它清楚地显示了将接受标头设置为也包含“application-xprotobuf”值。不确定在这种情况下我缺少什么。

0 投票
1 回答
1423 浏览

angularjs - GET 请求在本地工作,在测试服务器上返回 HTTP 406

我正在使用 AngularJS 1.4 和 Spring 4 RestController。当我在我的开发机器上发出 GET 请求时,一切正常。但是,当我将完全相同的 war 文件部署到我们的测试服务器时,来自完全相同的浏览器的完全相同的请求返回 HTTP 406 Not Acceptable。

两个环境之间的唯一区别在于我的开发机器上我使用的是嵌入式 Tomcat 8,而测试服务器上的应用程序部署在 Tomcat 7 上。

我的请求由一个包含电子邮件地址的路径变量组成。

本地请求: 在此处输入图像描述

测试服务器请求: 在此处输入图像描述

发出请求的angularjs代码:

接受请求的弹簧控制器

您能想到有什么理由可能导致这种行为吗?