为WebAPI1、.net4.0启用CORS我需要为我的WebAPI启用CORS,目前我无法升级到Framework4.5。(我知道System.Web.Http.Cors.EnableCorsAttribute。)我尝试将以下内容添加到我的Web.config中以查看它是否有效,但它没有:我还尝试通过使用将以下内容添加到我的Web.config中System.Web.Http.Filters。ActionFilterAttribute手动将Access-Control-Allow-Origin标头设置为“*”(基于这篇文章:AddingacustomheadertoallresponsesinWebAPI)-但由于请求在进入操作过滤器之前被拒绝,因此它不会解决问题。所以我现在有点卡住了..任何帮助表示赞赏。编辑:结果一直是答案,我一定是在测试之前做错了什么。但此解决方案意味着为所有操作启用了CORS(现在可以使用)。尝试添加:POST、PUT、DELETE等使用预发布CORS。浏览器发送一个OPTIONS请求。这是因为浏览器首先检查服务器端是否可以使用OPTIONS请求处理CORS,如果成功,则发送实际请求PUT或POST或Delete。由于您没有处理OPTIONS的操作方法,您将得到405。在最简单的形式中,您必须在控制器中实现这样的操作方法。更多解释-http://www.w3.org/TR/cors/#resource-preflight-requestshttp://www.html5rocks.com/en/tutorials/cors/publicHttpResponseMessageOptions(){varresponse=newHttpResponseMessage();response.StatusCode=HttpStatusCode.OK;返回响应;注意:该操作只响应OPTION请求,所以需要在web.config中添加必要的配置,如Access-Control-Allow-Origin=*和Access-Control-Allow-Methods=POST,PUT,DELETE。WebAPI2支持CORS,但对于WebAPI1,您必须遵循此路径。我在webAPI1跨域访问方面遇到了很多问题,最终能够修复它查看我的博客http://keerthirb.blogspot.in/2017/08/making-cross-enable-for-webapi1.html交叉代码是以上就是C#学习教程:EnableCORSforWebAPI1,.net4.0全部内容分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——publicclassCorsHandler:DelegatingHandler{conststringOrigin="Origin";conststringAccessControlRequestMethod="访问控制请求方法";conststringAccessControlRequestHeaders="Access-Control-Request-Headers";conststringAccessControlAllowOrigin="Access-Control-Allow-Origin";conststringAccessControlAllowMethods="访问控制允许方法";conststringAccessControlAllowHeaders="Access-Control-Allow-Headers";protectedoverrideTaskSendAsync(HttpRequestMessagerequest,CancellationTokencancellationToken){boolisCorsRequest=request.Headers.Contains(Origin);boolisPreflightRequest=request.Method==HttpMethod.Options;如果(isCorsRequest){如果(isPreflightRequest){返回Task.Factory.StartNew(()=>{HttpResponseMessageresponse=newHttpResponseMessage(HttpStatusCode.OK);response.Headers.Add(AccessControlAllowOrigin,request.Headers.GetValues(Origin).First());字符串accessControlRequestMethod=request.Headers.GetValues(AccessControlRequestMethod).FirstOrDefault();如果(accessControlRequestMethod!=null){response.Headers.Add(AccessControlAllowMethods,accessControlRequestMethod);}stringrequestedHeaders=string.Join(",",request.Headers.GetValues(AccessControlRequestHeaders));如果(!string.IsNullOrEmpty(requestedHeaders)){response.Headers.Add(AccessControlAllowHeaders,requestedHeaders);}返回响应;},cancellationToken);}else{returnbase.SendAsync(request,cancellationToken).ContinueWith(t=>{HttpResponseMessageresp=t.Result;resp.Headers.Add(AccessControlAllowOrigin,request.Headers.GetValues(Origin).First());返回resp;});}}else{returnbase.SendAsync(request,cancellationToken);}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
