ASP.Net 核心应用程序:*有时*在 MSVC 调试器 (iis express) 中被 CORS 策略阻止;部署到 IIS 7 时工作正常
ASP.Net Core app: *sometimes* blocked by CORS policy in MSVS debugger (iisexpress); works OK when deployed to IIS7
我有一堆相同 ASP.NET 核心应用程序的不同版本。我的工作站有 MSVS 2019。我的 DEV 和 PROD 服务器是 Windows Server 2012/IIS7。
该应用程序已经存在多年。它 NOT 做任何事情来显式启用 CORS。 NOT 调用 Services.AddCors()、app.UseCors()、policy.WithOrigins()、[EnableCors] 或类似的东西。
大多数时候,它“正常工作”。
但是有时(就像现在一样),当我在 MSVS 2019 调试器中 运行 时,尝试访问 FontAwesome 时出现 CORS 错误:
Chrome developer tools console:
Access to CSS stylesheet at 'https://use.fontawesome.com/releases/v5.7.0/css/all.css' from origin 'https://localhost:44342' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
出现问题时,仅 在我的工作站上的 MSVS 2019 调试器 (iiexpress) 中。它从不 出现在任何 PROD 或 DEV 服务器上。
令人困惑的是——据我所知——“没有任何改变”。我的项目昨天都成功了。但是他们今天都在 FA CSS 上遇到了 CORS 错误。和远程 IIS 服务器... 运行使用相同的应用程序...工作正常...在相同的浏览器中!
这是来自其中一个“不良”页面的 header:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js" integrity="sha256-4iQZ6BVL4qNKlQ27TExEhBN1HFPvAvAMbFavKKosSWQ=" crossorigin="anonymous"></script>
<script src="https://unpkg.com/gijgo@1.9.13/js/gijgo.min.js" type="text/javascript"></script>
<link href="https://unpkg.com/gijgo@1.9.13/css/gijgo.min.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap4.min.js"></script>
<script src="https://cdn.datatables.net/plug-ins/1.10.25/sorting/datetime-moment.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap4.min.css" rel="stylesheet" type="text/css" />
</head>
我不想修改应用程序(如果我能避免的话),只是因为我不想冒险破坏“永远”存在的代码。
我喜欢弄清楚我工作站环境中可能发生的变化,以便我可以“修复”它。
或者我可以使用与 FontAwesome 不同的 link?
问:有什么建议吗?
解决方法:
- 这个 link 描述了基本问题 - 但我无法从“curl”获得任何有用的信息:
-
C:\Windows\System32\curl.exe: curl 7.79.1 (Windows) libcurl/7.79.1 Schannel
结果:“空白”- 没有任何“curl”输出...
我可以通过更改所有 ASP.Net 布局来解决这个问题:
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">
为此:
@*<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">*@
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.11.2/css/all.css" />
结果: 有效:
没有 CORS 错误; FontAwesome 图标在 MSVS 上成功显示。再次.
问:???为什么???
问:关于如何准确排除第一个 FA 问题的任何建议 link?
- 为什么它在“昨天”工作...但在“今天”开始失败?
- 为什么 ALWAYS 在 Windows/IIS7 (http) 上工作,但 SOMETIMES 在 MSVS/iisexpress (https/localhost)?
来自客户端请求的某些东西 and/or 客户端环境肯定会影响特定 FA 服务器是否决定阻止请求。我绝对想更好地理解“什么”。
问:有任何 thoughts/suggestions/further 故障排除提示吗?
<link>
元素中的 crossorigin="anonymous"
导致浏览器使用 CORS 请求加载样式表。如果没有该属性,样式表可以从没有 CORS 的任何来源加载。
也许删除该属性对您来说是一种解决方法,因为 fontawesome.com
确实似乎偶尔会忽略 CORS 请求中的 Access-Control-Allow-Origin
header(以及 Content-Type
header).我在其中找不到模式。
我有一堆相同 ASP.NET 核心应用程序的不同版本。我的工作站有 MSVS 2019。我的 DEV 和 PROD 服务器是 Windows Server 2012/IIS7。
该应用程序已经存在多年。它 NOT 做任何事情来显式启用 CORS。 NOT 调用 Services.AddCors()、app.UseCors()、policy.WithOrigins()、[EnableCors] 或类似的东西。
大多数时候,它“正常工作”。
但是有时(就像现在一样),当我在 MSVS 2019 调试器中 运行 时,尝试访问 FontAwesome 时出现 CORS 错误:
Chrome developer tools console:
Access to CSS stylesheet at 'https://use.fontawesome.com/releases/v5.7.0/css/all.css' from origin 'https://localhost:44342' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
出现问题时,仅 在我的工作站上的 MSVS 2019 调试器 (iiexpress) 中。它从不 出现在任何 PROD 或 DEV 服务器上。
令人困惑的是——据我所知——“没有任何改变”。我的项目昨天都成功了。但是他们今天都在 FA CSS 上遇到了 CORS 错误。和远程 IIS 服务器... 运行使用相同的应用程序...工作正常...在相同的浏览器中!
这是来自其中一个“不良”页面的 header:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js" integrity="sha256-4iQZ6BVL4qNKlQ27TExEhBN1HFPvAvAMbFavKKosSWQ=" crossorigin="anonymous"></script>
<script src="https://unpkg.com/gijgo@1.9.13/js/gijgo.min.js" type="text/javascript"></script>
<link href="https://unpkg.com/gijgo@1.9.13/css/gijgo.min.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap4.min.js"></script>
<script src="https://cdn.datatables.net/plug-ins/1.10.25/sorting/datetime-moment.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap4.min.css" rel="stylesheet" type="text/css" />
</head>
我不想修改应用程序(如果我能避免的话),只是因为我不想冒险破坏“永远”存在的代码。
我喜欢弄清楚我工作站环境中可能发生的变化,以便我可以“修复”它。
或者我可以使用与 FontAwesome 不同的 link?
问:有什么建议吗?
解决方法:
- 这个 link 描述了基本问题 - 但我无法从“curl”获得任何有用的信息:
C:\Windows\System32\curl.exe: curl 7.79.1 (Windows) libcurl/7.79.1 Schannel
结果:“空白”- 没有任何“curl”输出...
我可以通过更改所有 ASP.Net 布局来解决这个问题:
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">
为此:
@*<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">*@ <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.11.2/css/all.css" />
结果: 有效:
没有 CORS 错误; FontAwesome 图标在 MSVS 上成功显示。再次.
问:???为什么???
问:关于如何准确排除第一个 FA 问题的任何建议 link?
- 为什么它在“昨天”工作...但在“今天”开始失败?
- 为什么 ALWAYS 在 Windows/IIS7 (http) 上工作,但 SOMETIMES 在 MSVS/iisexpress (https/localhost)?
来自客户端请求的某些东西 and/or 客户端环境肯定会影响特定 FA 服务器是否决定阻止请求。我绝对想更好地理解“什么”。
问:有任何 thoughts/suggestions/further 故障排除提示吗?
<link>
元素中的 crossorigin="anonymous"
导致浏览器使用 CORS 请求加载样式表。如果没有该属性,样式表可以从没有 CORS 的任何来源加载。
也许删除该属性对您来说是一种解决方法,因为 fontawesome.com
确实似乎偶尔会忽略 CORS 请求中的 Access-Control-Allow-Origin
header(以及 Content-Type
header).我在其中找不到模式。