jquery - IIS HTTP 错误 400(无效动词)——请求损坏?

标签 jquery ajax google-chrome iis

正在寻求有关此问题的帮助。由于该应用程序是内部的,所以我可以分享的内容有些有限......

场景:Web 应用程序向/api/shortLink 端点发出 POST 请求,以获取 BI 应用程序中仪表板的短链接(例如:URL 缩短服务)。短链接保存参数/过滤器值,以便用户可以使用短链接返回到同一 View 。

shortLink 服务返回常规 200 状态和 ShortLink 代码。一切都很好,对吧?并非如此。来自该页面的下一个 HTTP 请求(GET、POST,无关紧要)会导致 HTTP 400 错误(无效动词)。

此问题仅发生在 Chrome(最新版本)中。 Firefox、IE11、Vivaldi 和 Safari 都工作正常。

获取短链接值的初始发布请求(工作正常,生成并返回短链接:

Request: 
POST http://jaxbamaptst1:8000/api/shortlink/?sessionId=4ea65890-dbb2-4757-8f03-c0e3bf306cdf HTTP/1.1
Host: jaxbamaptst1:8000
Connection: keep-alive
Content-Length: 18192
Pragma: no-cache
Cache-Control: no-cache
Accept: */*
Origin: http://jaxbamaptst1:8000
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
Content-Type: application/json; charset=UTF-8
Referer: http://jaxbamaptst1:8000/Dashboard/1e4ce64e-31e7-4f9e-96aa-8b9e546ba5c8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: webapp_sessionid=4ea65890-dbb2-4757-8f03-c0e3bf306cdf; webapp_clientid=27271080-59a9-4c3c-aaef-d8c489414165

"/Dashboard/41c892a0-d83c-4d98-beaa-cee8c656c727?e=false&vo=viewonly&overrides=eyJfX2NsYXNzVHlwZSI6ImR1bmRhcy52aWV3LmNvbnRyb2xzLlZpZXdPdmVycmlkZXMiLCJ2aWV3UGFyYW1ldGVycyI6W10sImRlZmF1bHRWaWV3UGFyYW1ldGVyVmFsdWVzIjpbeyJ2aWV3UGFyYW1ldGVyTmFtZSI6InBhcmFtQ3VycmVudE9yZyIsInBhcmFtZXRlclZhbHVlIjp7Il9fY2xhc3NUeXBlIjoiZHVuZGFzLmRhdGEuQ29sbGVjdGlvbk1lbWJlclZhbHVlIiwidmFsdWVzIjpbeyJfX2NsYXNzVHlwZSI6ImR1bmRhcy5kYXRhLkhpZXJhcmNoeU1lbWJlciIsImNvbXBhdGlibGVVbmlxdWVOYW1lIjoiW0RpbSBFbXBsb3llZV0uW0N1cnJlbnQgT3JnLUNlbnRlci1VTS1UTS1BZ2VudF0uW0NlbnRlcl0uJltSXSZbQ01DXSZbS05YQ01DXSIsImhpZXJhcmNoeVVuaXF1ZU5hbWUiOiJbRGltIEVtcG<<snip rest of overrides. Very lengthy>>

响应也正常,返回想要的短链接:

HTTP/1.1 200 OK
Cache-Control: no-store, must-revalidate, no-cache, max-age=0
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
Date: Fri, 30 Sep 2016 02:44:21 GMT
Content-Length: 28

"saqecfh3x14wmygknpqnzxwt3w"

现在,无论页面的下一个调用是什么,结果都将是 HTTP 400 - Invalid Verb

该请求在 Chrome 中看起来完全正常。然而,当你在 Fiddler 中查看它时,事情变得有点奇怪..

这是一个失败的请求:

JSZVVUAXF1ZU5HBWUIOIJBRGLTIEVTCGXVEWVLXS5BQ3VYCMVUDCBPCMCTQ2VUDGVYLVVNLVRNLUFNZW50XS5BT3JNYW5PEMF0AW9UXS4MW1JDJLTDTUNDIIWIAGLLCMFYY2H5VW5PCXVLTMFTZSI6ILTEAW0GRW1WBG95ZWVDLLTDDXJYZW50IE9YZY1DZW50ZXITVU0TVE0TQWDLBNRDIIWIY2FWDGLVBII6IKNNQYISIMXLDMVSV<<snipped for brevity>>SBGFWC2VKIJPMYWXZZSWIY2HPBGRJDGVTQ291BNQIOJASINVUAXF1ZU5HBWUIOIJBRGLTIGET http://jaxbamaptst1:8000/Link/?shortLink=saqecfh3x14wmygknpqnzxwt3w HTTP/1.1
Host: jaxbamaptst1:8000
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://jaxbamaptst1:8000/Dashboard/1e4ce64e-31e7-4f9e-96aa-8b9e546ba5c8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: webapp_sessionid=4ea65890-dbb2-4757-8f03-c0e3bf306cdf;      webapp_clientid=27271080-59a9-4c3c-aaef-d8c489414165

注意“GET”动词之前的编码数据(或乱码?)。 IIS 返回错误 400 并不奇怪。

Chrome 看起来一切顺利(除了 400 响应):

Request URL:http://jaxbamaptst1:8000/Link/?shortLink=saqecfh3x14wmygknpqnzxwt3w
Request Method:GET
Status Code:400 Bad Request
Remote Address:127.0.0.1:8888  <<due to Fiddler proxy>>

见过这样的事情吗?

此外,顺便说一句 - 我们通常不会在此应用程序中使用 SSL,因为它是内部的。但是,我注意到如果我使用 SSL 访问它,则不会发生错误。

最佳答案

已解决:今天早上终于发现这个问题是由 McAfee DLP 引起的。将其留在这里以防其他人遇到类似的情况。

关于jquery - IIS HTTP 错误 400(无效动词)——请求损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39783138/

相关文章:

javascript - Wordpress Ajax - 始终返回 0

database - 与服务器的 Chrome 扩展数据连接

javascript - 将日期选择器日期拆分为单独的输入

javascript - Codeigniter-PHP : How to Change table week Dates , 更改输入日期

javascript - Jquery live 不能在 IE 中运行

javascript - Chrome ajax 请求陷入待处理状态

firefox - Javascript 断点在 Chrome 开发者工具中不起作用

javascript - 使用正则表达式替换 HTML - jQuery

javascript - jQuery imgelens 插件 - 未捕获类型错误 : Object [object Object] has no method 'imageLens'

javascript - bbcode ckeditor 对齐插件