ASP.NET總結
阿新 • • 發佈:2018-12-02
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" />