相关疑难解决方法(0)

在IE8/9中使用jQuery和XDomainRequest的CORS

更新:我强烈建议不要在XDomainRequest中投入任何时间,因为它是一个非常糟糕的实现,有很多限制.它基本上只适用于对非ssl服务器的GET请求,所以你不妨使用jsonp或其他什么.


我使用CORS来调用跨域API,但Internet Explorer提出了问题.通过XDomainRequest对象在IE8和IE9中应该可以使用CORS ,但是我无法使用它.

JQuery 拒绝为XDomainRequest提供本机支持,但是建议使用几个jQuery插件来添加此支持.本主题提出了两个这样的插件:jQuery.XDomainRequest.jsxdr.js,已经报告可以使用.Afaik,插件应该自动覆盖行为jQuery.ajax.我在这里找到了另一个插件.

我把一些演示页面与相应的插件jQuery.XDomainRequest以及xdrjquery.ie.cors放在一起,它们对启用CORS的服务器执行ajax请求.这些页面在Chrome和Firefox中运行,但IE8/9会立即抛出权限被拒绝错误(甚至在发出请求之前).这个MSDN帖子建议添加另一个处理程序,xhr.onprogress = function() {};但我尝试了这个,它也没有工作.

什么线索我做错了什么?我现在也使用MS8虚拟服务器测试IE8,但它有完全相同的问题.

编辑:好的所以我发现问题的一部分是我通过HTTPS使用POST.显然XDomainRequest不允许通过HTTPS使用CORS.我可以切换到HTTP,但我真的需要POST.

编辑2:本故事结束时,请在github上查看此问题.事实证明,当使用HTTP POST时,xDomainRequest只能将请求体(参数)编码为text/plain.这几乎使它变得毫无价值,因为每个人都使用application/x-www-form-urlencodedmultipart/form-data.

jquery cors internet-explorer-9 xdomainrequest

62
推荐指数
2
解决办法
6万
查看次数

如何将纯文本发布到ASP.NET Web API端点?

我有一个ASP.NET Web API端点,其控制器操作定义如下:

[HttpPost]
public HttpResponseMessage Post([FromBody] object text)
Run Code Online (Sandbox Code Playgroud)

如果我的帖子请求正文包含纯文本(即不应该被解释为json,xml或任何其他特殊格式),那么我认为我可以在我的请求中包含以下标题:

Content-Type: text/plain
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

No MediaTypeFormatter is available to read an object of type 'Object' from content with media type 'text/plain'.
Run Code Online (Sandbox Code Playgroud)

如果我将控制器操作方法签名更改为:

[HttpPost]
public HttpResponseMessage Post([FromBody] string text)
Run Code Online (Sandbox Code Playgroud)

我得到一个略有不同的错误消息:

No MediaTypeFormatter is available to read an object of type 'String' from content with media type 'text/plain'.
Run Code Online (Sandbox Code Playgroud)

text content-type http-post http-request asp.net-web-api

36
推荐指数
5
解决办法
2万
查看次数