2015-09-11 79 views
6

我構建了一個ASP.NET Web API服務並在該服務中啓用了CORS。此服務用於提供報告模板資源(html, image, css, font)。 Web客戶端根據下載的模板加載模板並顯示報告。ASP.NET CORS阻止字體請求

因此,考慮到服務enpoint:http://templates.domain.com, 我嘗試從一個Web應用程序(http://client.domain.com)訪問該服務(REST, Image, Font),那麼Web客戶端應用程序將加載:

  • http://templates.domain.com/templates/:templateName
  • http://templates.domain.com/templates/:templateName/css/style.css
  • http://templates.domain.com/templates/:templateName/image/header.jpg
  • http://templates.domain.com/templates/:templateName/font/test.ttf

在上面,服務的REST API,CSS和圖像運行良好,但字體被阻止/失敗。從出身「http://localhost:49350

字體已經從 加載阻止跨來源資源共享政策:否 「訪問控制允許來源」標頭出現在請求 資源。 Origin'null'

到目前爲止,我已經嘗試了下面的解決方案,但字體仍然被阻止。

  1. Microsoft.Owin.Cors

    app.UseCors(CorsOptions.AllowAll);

  2. Microsoft.AspNet.WebApi.Cors

    var cors = new EnableCorsAttribute("*", "*", "*"); config.EnableCors(cors);

+1

你有沒有在你的前端web.config文件中定義的字體擴展?如果我沒有定義它們,我會得到一個404(不是CORS錯誤),所以也許這不是問題。例如

+0

@S。寬鬆的沒有404,只是CORS錯誤 –

+0

你可以發佈請求/響應頭? – swestner

回答

7

您是否使用OWIN或的WebAPI?

對於ASPNET的WebAPI以下將使一切通過:

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 

指出,如果允許「*」是潛在的安全漏洞你說從anywere任何人都可以調用這些方法是非常重要的。