javascript - 将Http Header 添加到静态文件解决 "Script Error"

标签 javascript asp.net-web-api cors signalr

一周以来,我一直在用头撞墙试图解决这个问题。希望有人能看到我遗漏的东西。

我有两个项目:localhost:A (Web-Api) 托管一个 js 文件,localhost:B (.NET MVC) 使用该 js 文件。当试图捕获 js 文件中的错误并将其发送到 localhost:A 时,我收到了一条神秘的 Script Error 消息,而不是实际错误。

Google 快速搜索告诉我这是一种防止 localhost:A 收集有关客户端的信息的安全措施。为了解决这个问题,我需要做两件事:

  1. 添加 crossorigin='anonymous' localhost:B 对 js 文件的引用
  2. 将 HttpHeader Access-Control-Allow-Origin="*" 添加到 js 文件响应中。

我找到了几种在 Web-Api 上执行 2. 的方法,但似乎都不起作用。

我试过像这样在 Web.config 文件中添加 header :

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

我试过像这样在 Global.asax.cs 文件中添加 header :

public static void Register(HttpConfiguration config)
{
    var corsAttr = new EnableCorsAttribute("*", "*", "*");
    config.EnableCors(corsAttr);

    config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

我试过像这样在 Startup.cs 文件中添加 header :

public void Configuration(IAppBuilder app)
{
    //app.UseCors(CorsOptions.AllowAll);<--and here
    app.Map("/signalr", map =>
    {
        map.UseCors(CorsOptions.AllowAll);
        var hubConfiguration = new HubConfiguration
        {
            EnableDetailedErrors = true
        };
        map.RunSignalR(hubConfiguration);
    });
}

HTTP 和 SignalR 传输与 header 一起发生,但正在获取的文件缺少 header 。

我错过了什么?

编辑:这是当前请求和响应 header 的屏幕截图: enter image description here

编辑 2:如果我删除 startup.cs 中的代码,并在 web.config 中添加代码,我会开始获取 header ,但也会开始获取寻找信号器/集线器的 404 响应。将代码放在 startup.cs 和 webconfig 中会给我这个错误:The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.

最佳答案

我一直没能找到解决办法。我最终为 js/css 文件创建了一个 CDN,这允许我在 web.config 中设置自定义 header ,同时将信号器配置保留在另一个项目中。

关于javascript - 将Http Header 添加到静态文件解决 "Script Error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57041230/

相关文章:

javascript - 表格行上的 Bootstrap Collapse 没有动画

javascript - 使用 HTML5/JavaScript 生成图像的 MD5 哈希

c# - 通过传递简单和复杂的参数来调用 web api

testing - postman 中的循环邮寄请求

python - 如何在 Google App Engine Python 服务器上启用 CORS?

javascript - XMLHttpRequest无法加载XXX No'Access-Control-Allow-Origin' header

javascript - 使用来自子域的请求发送 cookie

javascript - jquery-ui : Dialog not opened at vertical center

JavaScript 获取数据后滚动

c# - 使用 ASP.NET Web API 2 获取具有动态参数过滤的资源