首页 > Windows开发 > 详细

C# 跨域问题

时间:2021-04-15 15:02:33      阅读:22      评论:0      收藏:0      [点我收藏+]

C# 跨域问题填坑日记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 请求,被拦截。

报错

技术分享图片

解决方案

配置文件 <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# 跨域问题

原文:https://www.cnblogs.com/hustshu/p/14661924.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!