1. 程式人生 > >ASP.NET總結

ASP.NET總結

1. 跨域

  • 提供Http層的web api時,通常需要考慮跨域問題。
  • 因為瀏覽器處於安全考慮,預設不允許前端頁面向不是自己所在的ip/域名發起請求,因此需要伺服器端指明自己允許部分或所有域名進行跨域請求
    • 通常是在web.config中配置、web伺服器中進行站點配置、根目錄下方式跨域檔案等方式。
    • 最好不要允許所有域名可以發起跨域請求,可以初步避免XSS,但攻擊者其實還是可以通過iframe或jsonp等方式繞過。
  • 不能跨域時,從瀏覽器的返回中可以看到,通常是這個錯誤:No “Access-Control-Allow-Origin” header is present
  • 可以在web.config中增加如下配置以允許跨站請求:
<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

2. 405錯誤

  • 有時請求webapi,會返回405 (Method Not Allowed),可能需要註釋掉web.config中的如下配置:
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />