让使用WebForm的.aspx文件写的WebApi能够跨域访问

解决办法

在web.config文件中加入下面的节点来配置。

  <system.webServer>
    <directoryBrowse enabled="false" />

    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="*" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>

事情起因

我的同事创造了一种用WebForm写WebApi的方法。

怎么写的呢?

建一个文件叫做api.aspx。

然后再Page_Load事件中:

能拿到请求的地址栏参数;

         string method = this.Request.QueryString["method"];
         string openid = this.Request.QueryString["openid"];

能拿到请求的body;

         string ps = new StreamReader(this.Request.InputStream).ReadToEnd();

还能响应;

            else if (method.ToLower() == "app_yushoudan.get")
            {
                var res = new YuShouDan().get(psObj).ToJson();
                this.Response.Write(res);
                Log(method, ps, res);
                this.Response.End();
                return;
            }

这些接口给写微信前端的同事调用是没有问题的。

但是这两天我想用它来练习下浏览器前端,结果就发现了跨域的问题。

一开始没有找到解决办法,于是我建了一个.NET Core2.1 WebApi项目来提供练习用的接口,它配置允许跨域是很简单的。

现在找到了配置的方法,特此记录。

 

让使用WebForm的.aspx文件写的WebApi能够跨域访问

上一篇:C#中RDLC控制某列的显示隐藏


下一篇:C#中RDLC合并两个列的值