2012-07-24 17 views
7

Tôi có một trang có khung nội tuyến hiển thị trang bên ngoài. Trang bên ngoài được định cấu hình để tải xuống tệp CSS từ máy chủ của tôi.Trong ASP.NET, làm cách nào để thêm tiêu đề CORS cho các tệp TTF?

Trong CSS, tôi đã thêm một chọn @font-face:

@font-face { 
    font-family: "Special Font"; 
    src: url("<%= Request.Url.GetLeftPart(UriPartial.Authority) + "/fonts/specialfont.ttf" %>"); 
} 

tải này và hiển thị tốt font chữ trong Chrome, nhưng trong Firefox, nó tải về các font chữ, nhưng từ chối sử dụng nó. Thực hiện một ít nghiên cứu cho thấy rằng vấn đề này là một vấn đề chính sách đa nguồn gốc. Một trong những giải pháp được nêu ở đây:

http://enable-cors.org/

Là để cho phép các tiêu đề CORS. Tuy nhiên, giải pháp này cung cấp là trang web rộng:

<?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
     <system.webServer> 
      <httpProtocol> 
       <customHeaders> 
        <add name="Access-Control-Allow-Origin" value="*" /> 
       </customHeaders> 
      </httpProtocol> 
     </system.webServer> 
</configuration> 

Trong khi đó tôi sẽ chỉ muốn kích hoạt nó cho chỉ .TTF tập tin. Có cách nào để làm điều này, hoặc thông qua việc sử dụng một HttpHandler hoặc một số phương pháp khác?

Trả lời

8

Bạn có thể đạt được điều gì đó tương tự bằng cách sử dụng location element trong web.config để giới hạn quy tắc cấu hình cho một thư mục hoặc tệp cụ thể. Ví dụ:

<configuration> 
    <location path="fonts/specialfont.ttf"> 
    <system.webServer> 
     <httpProtocol> 
      <customHeaders> 
      <add name="Access-Control-Allow-Origin" value="*" /> 
      </customHeaders> 
     </httpProtocol> 
    </system.webServer> 
    </location> 
</configuration> 

Mặc dù bạn có thể muốn bật CORS cho tất cả phông chữ, ví dụ: <location path="fonts">.

Câu trả lời cho this question có một vài ví dụ khác về location.