簡體   English   中英

為ASP.NET MVC中的靜態資源啟用CORS?

[英]Enable CORS for static resources in ASP .NET MVC?

我在Web API和ASP .NET MVC中的通用控制器中找到了大量關於CORS的資源。

但是,我的情況是,我希望特定文件夾中的所有靜態資源(CSS和JS文件)也可以通過AJAX下載。 換句話說,為這些資源或該文件夾啟用CORS。

我怎么能做到這一點? 我沒有發現類似的問題。 它們都與Web API或通用控制器相關。

示例改編自演練:創建和注冊自定義HTTP模塊 這應該將標頭添加到所有.js.css請求中。

創建模塊

using System;
using System.Web;
public class HelloWorldModule : IHttpModule
{
    public HelloWorldModule()
    {
    }

    public String ModuleName
    {
        get { return "HelloWorldModule"; }
    }

    // In the Init function, register for HttpApplication 
    // events by adding your handlers.
    public void Init(HttpApplication application)
    {
        application.BeginRequest += 
            (new EventHandler(this.Application_BeginRequest));
    }

    private void Application_BeginRequest(Object source, 
         EventArgs e)
    {
    // Create HttpApplication and HttpContext objects to access
    // request and response properties.
        HttpApplication application = (HttpApplication)source;
        HttpContext context = application.Context;
        string filePath = context.Request.FilePath;
        string fileExtension = 
            VirtualPathUtility.GetExtension(filePath);
        if (fileExtension.Equals(".css") || fileExtension.Equals(".js"))
        {
            context.Response.AddHeader("Access-Control-Allow-Origin", "*");
        }
    }

    public void Dispose() { }
}

注冊在經典模式下運行的IIS 6.0和IIS 7.0的模塊

<configuration>
  <system.web>
    <httpModules>
      <add name="HelloWorldModule" type="HelloWorldModule"/>
     </httpModules>
  </system.web>
</configuration>

注冊在集成模式下運行的IIS 7.0模塊

<configuration>
  <system.webServer>
    <modules>
      <add name="HelloWorldModule" type="HelloWorldModule"/>
    </modules>
  </system.webServer>
</configuration>

在運行MVC時,請確保更改根目錄中的那個(而不是Views文件夾)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM