如何在vb.net Web API项目中启用CORS

问题描述 投票:0回答:1

环境: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)
vb.net asp.net-web-api cors
1个回答
0
投票

以下是在刚刚从 Mozilla/Google 网站上安装的正常、诚实的浏览器中控制的 CORS 的快速概述:

  • 页面由 acme.com 提供
  • 页面包含脚本
  • 脚本需要来自 foobar.com 的数据,要求浏览器获取数据
  • 浏览器首先会说“嘿 foobar.com,您将允许下载数据的网站列表是什么?”
  • foobar.com 说“foobar.com 和 barbaz.com”
  • 浏览器拒绝脚本的获取尝试,因为脚本是从 acme.com 提供的,而 acme.com 不在允许的站点列表中

如果 foobar.com 响应指定 acme.com 位于站点列表中,那么浏览器将继续实际执行 GET


邮递员不关心这些;如果你要求 Postman 从 foobar.com 获取数据,它会发出请求,foobar.com 可能会* 提供服务并且 postman 会显示它..

*从技术上讲,服务器可能会拒绝为其提供服务,但 CORS 不是服务器端安全功能;它依赖于体面、诚实的浏览器,如果被告知的话,它会阻止请求

© www.soinside.com 2019 - 2024. All rights reserved.