zoukankan      html  css  js  c++  java
  • 让使用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开发的基础。

  • 相关阅读:
    spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常
    在zepplin 使用spark sql 查询mongodb的数据
    Unable to query from Mongodb from Zeppelin using spark
    spark 与zepplin 版本兼容
    kafka 新旧消费者的区别
    kafka 新生产者发送消息流程
    spark ui acl 不生效的问题分析
    python中if __name__ == '__main__': 的解析
    深入C++的new
    NSSplitView
  • 原文地址:https://www.cnblogs.com/fabao/p/12726565.html
Copyright © 2011-2022 走看看