Net Core教程

C# 跨域问题

本文主要是介绍C# 跨域问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

C# 跨域问题填坑日记1

报错

1

解决方案

标准动作,配置文件 web.config<system.webServer> 加上用户头

    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*"/>
        <add name="Access-Control-Allow-Headers" value="Content-Type, Access-Control-Allow-Headers, Access-Control-Request-Headers, Access-Control-Request-Method, Authorization, X-Requested-With, User-Agent, Referer, Origin"/>
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
      </customHeaders>
    </httpProtocol>

C# 跨域问题填坑日记2

遇到 未返回有效 http 状态的障碍。原因是浏览器发送 options 请求,被拦截。

报错

2

解决方案

配置文件 <system.webServer> 中增加:

   <modules runAllManagedModulesForAllRequests="false" >
       <add name="SpecialMethodModule" type="HiOS_NSDataAPI.SpecialMethodModule"/>
    </modules>


SpecialMethodModule 为 IHttpModule 派生类,用于重写服务响应

SpecialMethodModule 内容如下:

 public SpecialMethodModule()
        {
        }

        public void Init(HttpApplication app)
        {
            app.BeginRequest += new EventHandler(this.BeginRequest);
        }

        public void Dispose()
        {
        }

        public void BeginRequest(object resource, EventArgs e)
        {
            HttpApplication app = resource as HttpApplication;
            HttpContext context = app.Context;
            if (context.Request.HttpMethod.ToUpper() == "OPTIONS")
            {
                context.Response.StatusCode = 200;
                context.Response.End();
            }
        }

问题得到解决,此方法还可以用于服务的权限设置。

这篇关于C# 跨域问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!