讓使用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開發的基礎。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM