问题标签 [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.
spring - Spring Controller 向客户端发送图像导致 406
我正在尝试根据请求将图像发送到前端,如果我将它作为 JSON 的一部分放入请求正文中,它可以工作,但我想使用图像/png,更有意义,但是当我尝试时得到 406那。
控制器:
测试(客户端):
我错过了什么?
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:
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 :)
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 不是文件扩展名?
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:
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 文件的文件夹中
如果我直接在浏览器中打开 jQuery,它会正确打开。
我试过了
- 从绝对路径改变
- 重命名的脚本文件夹
- 检查所有标签正确关闭
- 标题部分已选中,但如果您想查看
标题部分
我在 SO 上检查了与错误相关的相同问题,但是他们在使用框架或使用 Ajax 时遇到了这个问题,但我没有使用任何框架,奇怪的行为是有时它只是正确加载,我完全不知道为什么它会给出错误和下一次刷新尝试,jQuery 加载正确。
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 类型是可接受的。
是否有任何 web.config 设置或其他技术可以绕过此验证,以便在无需重写路径逻辑的情况下不会收到此错误?我的谷歌搜索失败了。例如,我发现这个 IIS 论坛帖子链接自SO Answer,其中谈到
将所有请求映射到 ASP.NET 并使用 ASP.NET 的 StaticFileHandler 为它们提供服务
但是,该帖子没有解释如何执行此操作;它似乎也不适用。
编辑:(上面添加了错误页面图片)
作为另一个花絮,Nancy 路由返回表单的显式视图
因此,应该绕过内容协商。
java - Spring MVC + RestController 为资源提供 406
我正在为一个小型休息应用程序配置我的项目。我正在使用 Spring 4.2.2.RELEASE 当我创建一个使用 @RestController 注释的控制器或添加 @ResponseBody 时出现问题。css 或 js 资源只是停止工作并发送错误 406 Not aceptable。我读到这是由于消息转换器造成的,但我仍然有问题。
提前致谢
我的配置。
弹簧配置:
控制器
如果我从 EmpresaApiController 中注释函数 listAll,它就可以正常工作。但是如果我添加它,css和js就不起作用。
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”值。不确定在这种情况下我缺少什么。
angularjs - GET 请求在本地工作,在测试服务器上返回 HTTP 406
我正在使用 AngularJS 1.4 和 Spring 4 RestController。当我在我的开发机器上发出 GET 请求时,一切正常。但是,当我将完全相同的 war 文件部署到我们的测试服务器时,来自完全相同的浏览器的完全相同的请求返回 HTTP 406 Not Acceptable。
两个环境之间的唯一区别在于我的开发机器上我使用的是嵌入式 Tomcat 8,而测试服务器上的应用程序部署在 Tomcat 7 上。
我的请求由一个包含电子邮件地址的路径变量组成。
发出请求的angularjs代码:
接受请求的弹簧控制器
您能想到有什么理由可能导致这种行为吗?