• 让使用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项目来提供练习用的接口,它配置允许跨域是很简单的。

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

    写法的启发

    上面接口的写法对我是有启发性的。

    它提醒了我,web服务器的本质就是【Request】和【Response】。

    然后,.NET中专门监听http请求的类是【HttpLitenser】。利用它我实现了可以监听http请求并响应的程序,也就是一个最简单的WebApi的功能。

    我需要牢记,Web编程最重要的基础就是http协议。

    然后除了http协议,还有很多其他的协议和约定都是Web开发的基础。

  • 相关阅读:
    第三次jsp作业
    快速排列 使用链表
    Cross
    题目
    ranch
    robot
    Mold
    Mold2
    OX_pattern
    KSC sort
  • 原文地址:https://www.cnblogs.com/fabao/p/12726565.html
Copyright © 2020-2023  润新知