多个 Access-Control-Allow-Origin 标头

2024-04-19

作为参考,我使用的是 Visual Studio 2017 和 Windows 10。

我有一个 Web api 和带有用户帐户的相应 Web 应用程序。当我尝试登录时遇到一个错误,指出不存在 Access-Control-Allow-Origin 标头。我找到了一个指南,引导我了解如何设置 CORS。这是我使用的指南。

https://social.technet.microsoft.com/wiki/contents/articles/33771.fix-to-no-access-control-allow-origin-header-is-present-or-working-with-cross-origin-请求在 asp-net-web-api.aspx https://social.technet.microsoft.com/wiki/contents/articles/33771.fix-to-no-access-control-allow-origin-header-is-present-or-working-with-cross-origin-request-in-asp-net-web-api.aspx

在我的 WebApiConfig 文件中我有这段代码

public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services
        // Configure Web API to use only bearer token authentication.
        config.SuppressDefaultHostAuthentication();
        config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

        // Web API routes
        config.MapHttpAttributeRoutes();

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

        var cors = new EnableCorsAttribute("*", "*", "*");
        config.EnableCors(cors);
    }

在我的 AccountController 文件中,我在顶部添加了 EnableCors。

[EnableCors(origins: "*", headers: "*", methods: "*")]
[Authorize]
[RoutePrefix("api/Account")]

最后,在我的 Web.config 文件中添加了以下内容:

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
    <add name="Access-Control-Allow-Credentials" value="true" />
  </customHeaders>
</httpProtocol>

这解决了我的登录问题,但是我的 GETS 都不起作用。以下是 GET 函数的示例:

jQuery.support.cors = true;
    if (window.XMLHttpRequest) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", 'http://localhost:60690/api/ProfilePicture?Username=' + username, false);
        xmlhttp.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
        xmlhttp.setRequestHeader('Authorization', 'Bearer ' + localStorage.getItem('accessToken'));
        xmlhttp.send();
        if (xmlhttp.status == 200) {
            returnValue = jQuery.parseJSON(xmlhttp.responseText);
        }
    }

GET 抛出错误,指出“CORS 响应不允许使用多个 Access-Control-Allow-Origin 标头”。我看不到哪里有多个 Access-Control-Allow-Origin 标头。我应该去哪里寻找?

Update 1

发现了一些有趣的事情。我使用 Fiddler 来观察后台发生的所有事情以及导致错误的 GET 函数,我在标题中看到了这个:

因此,“Access-Control-Allow-Origin: *”肯定显示了两次,但问题是为什么。我搜索了所有代码,但只声明了一次。如果我删除该行,它会破坏登录页面,因此我必须将其保留。


我想我已经明白了这一点。我进入 WebApiConfig 文件并将有关 CORS 的部分更改为:

//var cors = new EnableCorsAttribute("*", "*", "*");
//config.EnableCors(cors);
config.EnableCors();

然后我从控制器中删除了 EnableCors 部分,它又开始工作了。我在 GET 调用中仍然遇到错误,但我从两个错误变成了只有一个错误,所以我想这是一个进步。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个 Access-Control-Allow-Origin 标头 的相关文章

  • 无法在 web.config 中为 WCF Web 服务设置服务名称属性

    我编写了一个运行良好的 WCF Web 服务 然后我从另一个应用程序复制了该 Web 服务的内容 并创建了一个新的 WCF 文件 该文件在 web config 中创建了一个新文件 但名称属性显示找不到命名空间 以下是我的 WCF 前几行的
  • std::type_info::hash_code() 的唯一性和“应该”的含义

    是否意味着保证相同std type info hash code 值意味着相同的类型 Cplusplus com http www cplusplus com reference typeinfo type info hash code 似
  • Task.Run 如何受 CPU 内核限制?

    为什么下面的程序只会运行有限数量的阻塞任 务 限制数量似乎是机器上的核心数量 最初 当我写这篇文章时 我希望看到以下内容 作业 1 24 的作业完成输出 2秒的间隙 工作产出 25 48 然而输出是 作业 1 4 的作业完成输出 然后每隔
  • 使用 decltype() 声明函数签名

    是否可以声明一个函数bar与函数具有相同的签名foo int foo int a return 0 decltype foo bar return 1 imaginary syntax 我认为这同样适用于 typedef 和别名 您可以使用
  • 修改文件流

    我现在正在开发一个允许编辑非常大的文本文件 4Gb 的类 嗯 这可能听起来有点愚蠢 但我不明白如何修改流中的文本 这是我的代码 public long Replace String text1 String text2 long repla
  • 如何通过点积获得峰值 CPU 性能?

    Problem 我一直在研究 HPC 特别是使用矩阵乘法作为我的项目 请参阅我的个人资料中的其他帖子 我在这些方面取得了不错的成绩 但还不够好 我退后一步 看看我在点积计算方面能做得如何 点积与矩阵乘法 点积更简单 并且允许我测试 HPC
  • C++ 多重继承关闭同名运算符

    是否可以从两个不同的抽象类继承仅返回类型不同的同名运算符 如果是这样 他们 实现运算符的语法是什么 使用 解析运算符的语法是什么 与任何其他虚函数相同 一般情况下的开销是多少 如果您可以向我提供参考或示例代码 将会有所帮助 thanks 1
  • 使用 For 循环进行异步和等待 [重复]

    这个问题在这里已经有答案了 我有一个 Windows 服务 它根据计划运行各种作业 确定要运行哪些作业后 将调度对象列表发送到迭代列表并运行每个作业的方法 问题是 由于外部数据库调用 某些作业可能需要长达 10 分钟才能运行 我的目标是不让
  • 为什么在用 size 声明的向量上使用 Push_back 会导致向量为零?

    我制作了一个恒定大小的向量来存储负值 然后打印我得到的所有值都是零 我只是想知道为什么它不存储负值 include
  • 从另一个类访问和设置一个类中的变量

    我有一个 shopping cart aspx cs 文件 还有一个类文件 spcart cs 购物车 aspx cs public partial class Ui ShoppingCart System Web UI Page publ
  • 回发后我的 JavaScript 函数在 ASP.NET 中不起作用

    我有共同的功能 我把它折叠起来CommonFunctions js在脚本文件夹中 我将它包含在我的主页上并在我的页面上使用它 当我在页面上进行任何回发时 我的功能不起作用 My CommonFunctions js function gf
  • 如何向 Json.NET 输出添加注释?

    有没有办法可以自动将注释添加到 Json NET 的序列化输出中 理想情况下 我想它类似于以下内容 public class MyClass JsonComment My documentation string public string
  • valgrind 错误“大小 4 的读取无效”[重复]

    这个问题已经存在了 这是我的程序 int fun1 void int n 9 int pf n cout lt lt pf lt
  • GNU Make “Abort trap: 6” 在 gcc 调用之后,但是单独执行时调用是有效的

    我正在使用 GNU Make 构建一个很多人都会使用的 C C 项目 makefile 尝试通用 因为该项目中有许多可选文件 每个用户通过 MATLAB 界面选择这些文件 然后通过命令行参数 make target OPTS XYZ 等 将
  • C++ 将浮点数转换为无符号字符?

    我是 C 新手 我想做了一些谷歌搜索sprintf可以完成这项工作 但是编译时出现错误 无法在unsigned char and a char 我需要一个无符号字符 因为我要打印到图像文件 0 255 RGB unsigned char p
  • x86-64 上这个语句有什么问题?

    该函数的目的是获取堆栈的起始地址 unsigned long find start void asm movq rsp eax 当我编译它时 出现错误 Error suffix or operands invalid for movq mo
  • 以系统帐户运行exe

    我正在尝试将我的 c exe 作为系统帐户运行 我怎样才能做到这一点 我试过了
  • C# 数据库包装设计

    我正在为 C 设计一个数据库包装器 以下是我有两个选择 选项A class DBWrapper IDisposable private SqlConnection sqlConn public DBWrapper sqlConn new S
  • 如何在.Net中使用SQLCipher

    我想用C winform 读取一个SQLCipher数据库并找到一个开源项目SQLitePCL https github com ericsink SQLitePCL raw 但是我还没有找到这个使用的例子 而且文档也不是很多 有朋友用过这
  • 使用 Linq 获取当前和上一个项目

    我有一个 Offer 类 例如 public class Offer public int OfferID get set public DateTime OfferDate get set public int CustomerID ge

随机推荐

  • 错误:EMFILE:打开的文件太多,请注意,除非我使用 sudo

    描述 最近我遇到了一个问题 我无法奔跑yarn start in element web目录 我得到这些errors https pastebin ubuntu com p 93v6Yx58DT 原本我以为这与element web本身所以
  • 如何以编程方式精确查找 PPI

    我正在尝试找出 iOS 中的 PPI 每英寸像素 我找不到任何直接的方法来查询它 就像我们查询显示尺寸一样 UIScreen mainScreen bounds 有一个方法 https stackoverflow com a 7922666
  • Xcode 升级到 4.5 后应用程序崩溃。将保留对象分配给 unsafe_unretained 变量

    在我的班级里 我有一个dispatch queue t属性声明如下 property nonatomic assign dispatch queue t queue 然后在我的 init 方法中我这样做 id initWithServerU
  • 在詹金斯管道的多个步骤中定义和访问变量

    我是从这个帖子来到这里的在 Jenkins Pipeline 的 shell 脚本部分定义变量 https stackoverflow com questions 51407976 defining a variable in shell
  • 在训练期间启用和禁用变量学习

    我想在训练期间开始或停止变量的学习 虽然Variable的构造函数有一个trainable参数 该参数构建后不可更改 为了实现这种效果 我当前的解决方案是在我想要更改变量的可训练状态时保存模型 将变量设置为所需的可训练状态来重建网络 然后重
  • 每月第二个星期一的 Cron 表达式(对于 Hangfire)

    我正在尝试在 Hangfire 中创建定期作业 每月第二个星期一运行一次 如下所示 1 Monday May 14 2018 8 00 AM 2 Monday June 11 2018 8 0 AM 3 Monday July 9 2018
  • 在编译时检测编译器版本

    这既是一个问题 也是一个参考 我希望人们能够在此基础上进行构建 以便有类似问题的人可以重用它 我们如何可靠地检测 C C ObjC 编译器的特定版本 现在我知道了 Visual Studio 的答案 并部分知道了 Xcode 的答案 现在
  • JSF 1.2 startElement 和 writeAttribute 解释

    我有机会为我的项目编写一些自定义渲染器 并且运行得非常好 然而 我对 ResponseWriter 方法中的一些参数有些困惑 该文档没有很好地解释这一点 因此我希望一位常驻 JSF 专家可以更好地解释这一点 具体来说 public abst
  • 在 powershell 中使用 %userProfile% 环境变量创建路径时出现意外行为

    我编写了一个脚本来创建一系列符号链接 我想将目标值设置为 shortpath 其中 shortpath userprofile dir1 dir2 dir3 filename ext shortpath 变量的值是有效的 我可以从运行命令打
  • C - 将大写字母转换为小写字母

    一个非常简单的程序 我只想将 A 变成 a 但输出给了我 A include
  • 类 VS 引用结构

    我正在使用 C 编写游戏 因此 我非常关心性能 我想知道主要区别是什么 如果可能的话 使用类传递数据或通过引用传递结构的性能考虑因素 出于性能原因 我希望不要复制数据 我假设通过 ref 传递比这里通过值传递要快得多 我知道类始终通过引用传
  • MS 缺少 VSTO 4.0 运行时下载?

    我们有代码检查 VSTO 4 0 运行时是否存在并下载 如果丢失 直到今天这一切都运作良好 MS 中的 VSTO 运行时文件似乎丢失了 有人对这个有了解吗 我们能否告诉客户这是 MS 问题并且很快就会得到解决 Google 没有找到任何有关
  • Serialized 和 DataContract(不是对比?)

    我正在阅读我的新项目中的一些代码 发现前开发人员同时使用 Serialized 和 DataContract Serializable and DataContract Namespace Some Name Space IsReferen
  • iTerm2 隐藏标记

    我最近安装了 iTerm2 的 Shell Integration 但在输入 shell 命令时它还添加了那些小箭头 称为标记 这真的很烦人 有什么方法可以禁用 隐藏它们 我在网上找不到 As per 文档 https www iterm2
  • 让 IIS6 与 WordPress 完美配合

    我有一个由 WordPress 驱动的博客 我正在尝试在 IIS6 服务器上进行设置 除了令我头疼的永久链接结构之外 一切正常 在谷歌搜索 wordpress codex之后 我了解到这是因为IIS6没有相当于Apache的mod rewr
  • 如何在 Android 上注册的应用程序中从我的 WebView 中启动 Web 链接?

    在我的 Android 应用程序中 我有一个 WebView 我想every在我的 WebView 中单击链接以启动我的设备上已注册的应用程序 如果有 否则在外部浏览器中打开 例如 如果用户从 WebView 中单击 Facebook 页面
  • Ninject - 找不到资源

    我收到错误 无法找到该资源 当我尝试在我的 MVC 3 应用程序中实现 Ninject 时 该问题似乎来自 Global asax 期间CreateKernel region Inversion of Control protected o
  • Postgres - python 多个 SSL 连接

    我在使用 psycopg2 和 SSL 建立两个并发 Postgres 数据库连接 一个到主数据库 一个到从数据库 时遇到问题 两个连接分别工作 即 import psycopg2 dsnMaster dbname sslcert path
  • 在嵌入式设备上使用new或malloc引起的段错误[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 多个 Access-Control-Allow-Origin 标头

    作为参考 我使用的是 Visual Studio 2017 和 Windows 10 我有一个 Web api 和带有用户帐户的相应 Web 应用程序 当我尝试登录时遇到一个错误 指出不存在 Access Control Allow Ori