环境:Microsoft Visual Studio 2019 社区、使用 VB.NET 的 ASP.NET v4.8 Web 应用程序/Web API 项目
我可以找到很多 C# 答案,但没有 vb.net 答案。我已将 CORS Nuget 包添加到我的项目中,并添加了此代码(它可以编译并运行正常,但在 localhost 或 prod 上没有区别,即任何原始域仍然可以调用 POST 方法):
WebApiConfig.vb
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web.Http
Imports System.Web.Http.Cors
Public Module WebApiConfig
Public Sub Register(ByVal config As HttpConfiguration)
' Web API configuration and services
Dim corsAttr = New EnableCorsAttribute("http://example.com", "*", "*")
config.EnableCors(corsAttr)
控制器:
' POST: api/Notification
<EnableCors("https://www.somedomain.com", "*", "*")>
Public Function PostValue(<FromBody()> ByVal value As Object)
以下是在刚刚从 Mozilla/Google 网站上安装的正常、诚实的浏览器中控制的 CORS 的快速概述:
如果 foobar.com 响应指定 acme.com 位于站点列表中,那么浏览器将继续实际执行 GET
邮递员不关心这些;如果你要求 Postman 从 foobar.com 获取数据,它会发出请求,foobar.com 可能会* 提供服务并且 postman 会显示它..
*从技术上讲,服务器可能会拒绝为其提供服务,但 CORS 不是服务器端安全功能;它依赖于体面、诚实的浏览器,如果被告知的话,它会阻止请求