【问题标题】:How to enable CORS in vb.net web api project如何在 vb.net web api 项目中启用 CORS
【发布时间】:2021-09-30 17:33:05
【问题描述】:

环境:Microsoft Visual Studio 2019 Community,ASP.NET v4.8 web application/web api project using VB.NET

我可以找到很多 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)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

【问题讨论】:

  • 任何源域仍然可以调用 POST 方法 - 您如何确定这一点?邮递员?
  • 嗨,Caius - 是的,邮递员。 (在本地运行)无论站点是在本地主机上运行还是托管在服务器上,调用都有效。
  • 邮递员不关心 CORS,而且我怀疑你认为的不是 CORS

标签: vb.net api web cors


【解决方案1】:

这里是一个 CORS 控制的快速概要,在一个普通的、诚实的浏览器中,刚刚从 Mozilla/Google 的网站上新安装:

  • 页面来自 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 不是服务器端安全功能;如果被告知这样做,它依赖于体面、诚实的浏览器阻止请求

【讨论】:

  • 听起来不像是一种安全措施。感谢您的信息 - 我想我会删除它。
  • 不是这样的;如果你仔细想想,情况恰恰相反;它为您无法控制的网站提供了一种调用您的东西的方法。如果您想要安全,请实施身份验证和授权
猜你喜欢
  • 1970-01-01
  • 2017-05-03
  • 2013-09-08
  • 2014-10-20
  • 2014-11-22
  • 2017-06-18
  • 2017-11-22
  • 2017-04-22
  • 2017-08-05
相关资源
最近更新 更多