首页 > 代码库 > Ajax JSON 跨域请求 服务(WebApi,WCF或者其他)
Ajax JSON 跨域请求 服务(WebApi,WCF或者其他)
直接来干货。
程式在 单台IIS下工作正常,换到域名下(负载均衡)就开开各种跨域了。研究了下,只要是符合以下条件的,基本上可以通用一种解决方案:
条件是:
1. HTTP方法:GET,Head,POST之外的方法
2. 使用POST方法,而且使用application/x-www-form-urlencoded, multipart/form-data, or text/plain 之外的 Content-Type,例如:以 POST 发送XML、JSON 等
3. 使用自定义头
解决方案:
移除 IIS下的OPTIONSVerbHandler Handle Mapping,
或者 在WebConfig 种 添加:
<system.webServer><handlers> <remove name="OPTIONSVerbHandler" /> <!-- 略 --> </handlers> </system.webServer>
再或者 直接拦截OptionS请求,
if (request.Method.Method==HttpMethod.Options.Method) { return base.SendAsync(request, cancellationToken).ContinueWith( task => { return request.CreateResponse(HttpStatusCode.OK); } ); }
究其原因,AJAX请求时,总会先发送一个OptionS,接着才发正常的请求。而IIS默认对Options的直接拦截,不做处理,直接返回,但是未包含 Access-Control-Allow-Origin Header,所以请求失败,就没有第二次正常的请求了。
Ajax JSON 跨域请求 服务(WebApi,WCF或者其他)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。