Web API 2.1 Windows 身份验证 CORS Firefox

2023-11-24

这是场景:

我创建了一个 web api 项目和一个 mvc 项目,如下所示:

http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

我通过 nuget 安装了 CORS 支持并添加了 EnableCorsAttribute

我运行了该项目,在 Chrome、IE 和 FireFox 上一切都按预期运行(GET、PUT 和 POST)。

然后我在 Web api 项目中启用了 Windows 身份验证(是的,我确实需要在 api 项目中进行 win 身份验证)。为了使其正常工作,我将 xhrFields arg 添加到我的 jquery.ajax 调用中:

        $.ajax({
            type: method,
            url: serviceUrl,
            data: JSON.stringify(foo),
            contentType: 'application/json; charset=UTF-8',
            xhrFields: {
                withCredentials: true
            }
        }).done(function (data) {
            $('#value1').text(data);
        }).error(function (jqXHR, textStatus, errorThrown) {
            $('#value1').text(jqXHR.responseText || textStatus);
        });

另外,我设置了 EnableCorsAttribute.SupportsCredentials 属性 = true

我测试了一切。 Chrome 和 IE 有效,FireFox 无效。 Firefox 收到 401 响应其预检 (OPTIONS) 请求。

FireFox 似乎没有尝试通过该服务进行身份验证。

有没有人找到解决这个问题的方法?


我想出了一个由两部分组成的解决方案。

问题在于,当 Firefox 发出 OPTION 请求并被 401 拒绝时,它不会进一步尝试重新进行身份验证。这导致我绕过所有 OPTION 请求的身份验证。我找不到关于这个主题的太多信息,但我确实发现了这个:

401 response for CORS request in IIS with Windows Auth enabled

(以下引用原页面内容)

在 Firefox 中启用 NTLM 身份验证(单点登录)

本操作指南将介绍如何在 Firefox 中启用 NTLM 身份验证(单点登录)。

你们中有多少人注意到,当您使用 Internet Explorer 并浏览到公司的 Intranet 页面时,它会自动对您进行身份验证,但当您使用 Firefox 时,系统会提示您登录框?

最近,我在寻找允许使用 Apache 进行 NTLM 身份验证的解决方案时,偶然发现了如何在 Firefox 中设置首选项,将 NTLM 身份验证信息传递到 Web 服务器。首选项是 network.automatic-ntlm-auth.trusted-uris。

你是怎么做到的?

1) 打开 Firefox 并在地址栏中输入“about:config”。 (当然不带引号)

2) 在“过滤器”字段中输入以下“network.automatic-ntlm-auth.trusted-uris”

3)双击我们刚刚搜索到的首选项名称

4) 输入您希望将 NTLM 身份验证信息传递到的站点的 URL,格式如下:

http://intranet.company.com,http://email.company.lan

5) 请注意,您可以在此字段中使用逗号分隔的列表。

6)更新:我创建了 VBScript,可用于通过使用组策略或独立(如果出于某种原因您想使用它)将此信息插入到用户 prefs.js 文件中。

该脚本可在此处下载。

下载脚本后,您需要从 ZIP 存档中提取它,然后修改以 strSiteList 开头的行。

注意:如果用户在执行脚本时打开了 Firefox,则该脚本将不会执行其功能。通过组策略运行该脚本不会出现任何问题,除非由于某种原因您的组策略在执行该脚本之前启动了 Firefox。

您可以通读脚本的其余部分以获取更多信息。如果您有疑问、意见或疑虑,请告诉我。

基于此,我将匿名身份验证设置为Enabled在 api 项目的设置中(我仍然将 Windows 身份验证设置为Enabled).

运行项目(mvc 和 api)后,在发出 CORS 请求时系统提示我输入凭据。提供我的凭据后,我能够使用 Firefox 成功进行 GET/POST/PUTS。

为了消除 Firefox 中的凭据提示,我收到了来自布洛克·艾伦这让我走上了启用 NTLM 身份验证的道路。我找到了一个帖子here它提供了有关如何更改适当设置的说明。

添加后'http://localhost' 到网络.协商-身份验证.可信-uris设置后,我现在可以使用 Firefox 对所有动词发出 CORS 请求,而无需提示输入凭据。

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

Web API 2.1 Windows 身份验证 CORS Firefox 的相关文章

  • MVC3 和实体框架

    我的问题很简单 将 edmxMVC3 项目的 Web 应用程序的模型文件夹中的文件吗 我的答案非常简单 不要用数据访问逻辑和数据建模搞乱表示层 整个 MVC 应用程序 Visual Studio 解决方案中从下到上至少有 4 个项目 1 P
  • ASP.NET隐藏字段值设置

    我已经用谷歌搜索过这个 但不知道如何设置隐藏字段的值 我有以下代码
  • Bootstrap Glyphicons 在 IE10 或 FF 中不显示

    我无法在 IE10 或 FF 中显示引导字形图标 我正在使用最新的 bootstrap 3 代码 并以标准方式包含字形 span class glyphicon glyphicon edit span 它们在 Chrome 中工作正常 但在
  • AJAX控制工具包加载所有脚本

    我有一个奇怪的问题 我似乎无法解决 我正在使用 AJAX 控制工具包日历延长器在我的一些页面上 尽管我通过网络找到了信息 但我似乎无法让它与常规程序一起工作ScriptManager控制 它only与一个ToolkitScriptManag
  • 有没有办法跨应用程序使用 ASP.NET Bundles

    我使用 ASP NET Web Optimization 包来捆绑和缩小 javascript css 文件 我有一些使用相同 javascript css 文件的 ASP NET 应用程序 现在我在每个应用程序中设置捆绑包 我想知道是否有
  • 响应.WriteFile

    有一个具有特定语法的 URL 用于下载文件 用户在文本框中输入文件名并按下下载按钮 在单击事件中 将调用 Response WriteFile 将文件发送到客户端 现在我想创建另一个带有页面的网站 用户在其中输入文件名并按下载按钮来下载该文
  • 在 ASP.NET 中生成新的 SessionId

    登录时我想生成一个新的 SessionId 我已经发现一种有效的解决方案 https stackoverflow com questions 1368403 generating a new asp net session in the c
  • 如何简化 ASP.NET MVC 中的全状态交错模式对话框

    我需要在多对多模式对话框中保留状态渐进增强 http en wikipedia org wiki Progressive enhancementASP NET MVC 项目中的方式 在我的代码中 当禁用 javascript 时 模式对话框
  • 自定义可视化 Web 部件属性 sharepoint

    我在 Visual Studio 2012 中创建可视 Web 部件属性时遇到问题 我被提及http msdn microsoft com en us library ee231551 aspx http msdn microsoft co
  • 实体框架 - 循环更新属性

    我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值 更具体地说 我有 50 个字段 其中最多填充 50 个下拉列表 所有 50 个可能都需要填充 也可能不需要填充 为了解决这个问题 我有一个中继器 最多可以创建 50 个 DD
  • S3 不返回 Access-Control-Allow-Origin 标头?

    我无法强制 S3 在从存储桶返回的所有对象上设置 CORS 标头 尽管启用了 CORS 但由于客户端 S3 上传正在工作 返回的对象没有 CORS 标头 我启用的策略是
  • HTML 嵌入对象具有灰色背景。可以透明吗?

    我使用带有开源插件的 Firefox 来播放视频 视频被 尽可能好地 缩放以适应嵌入对象的宽度和高度中定义的可用空间 但有时右侧和 或底部会有一点灰色边框 看来这不是我的父 div 的背景颜色 因为更改它根本没有效果 这是 HTML div
  • Firefox 上的 Angular JS 输入日期

    我有这些输入和这个模型
  • 回发后,asp.net 文本框不会填充

    我使用 ASP NET 和 C 几个文本框来计算输入的结果 Textbox2 输入了一个值 单击按钮后 Textbox1 就会被填充 我第一次输入该值时效果很好 但是第二次更改 Textbox2 中的值时 我发现在单击按钮进行调试时该值被分
  • 如何在 ASP.NET 中实现 PayPal Express Checkout? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我如何在 ASP NET 中创建快速
  • 如何在 gridview 控件的项目模板内显示列表视图。

    如何在 gridview 控件的项目模板内显示列表视图 gridview 将列出 table bill 中的所有 bill id 列表视图将绑定 table bill details 中具有特定 item bill id 的所有 item
  • 尝试将 Asp.Net Memebership 数据库部署到 SQL Azure

    我一直在尝试让 ASP net 会员服务提供商与托管在 SQL Azure 中的其余数据库配合使用 我已针对数据库运行适当的 SQL Azure 特定脚本来进行设置 这些脚本可从 Microsoft 获取 http archive msdn
  • 部署项目 dll 导致“两者都存在类型 x”错误

    我有一个 Web 应用程序项目 一个业务逻辑项目和一个用于 Web 应用程序的 Web 部署项目 当我构建解决方案时 部署 Release bin 包含每个项目的 1 个 dll 因此我为 MyWeb dll MyWebBusiness d
  • 元素不适应 Firefox 上的

    使用 ES6 ish D3js 模块运行 Angular 6 应用程序会导致 Firefox 出现问题 Chromium Chrome Safari 和 IE Edge 工作正常 伪代码看起来类似于 生产代码可以在下面找到
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择

随机推荐

  • SQL“LIKE”语法

    我正在编写一个需要在 mysql 和 postgresql 上运行的应用程序 我必须使用like比较一些值 在mysql中LIKE它不区分大小写 在 PostgreSQL 中LIKE它区分大小写并且ILIKE它不区分大小写 如果匹配必须不区
  • HTML 视频自动播放而不静音(或者 youtube 是如何做到的)?

    我知道许多较新的浏览器现在禁用autoplay当视频不存在时muted或将其静音然后播放 如果没有用户交互 也无法调用视频播放 这是可以理解的 但我想知道 youtube 如何仍然能够用声音开始视频 我查了一下 他们确实使用了视频标签 只是
  • Laravel redirect::route 在页面加载之间显示一条消息

    我目前正在使用 Laravel 开发一个网络应用程序 直到最近该应用程序都运行得很好 我不知道是什么触发了它 但这是我遇到的问题的摘要 登录过去可以正常工作 因为我有一个 AccountController 可以执行以下操作 auth Au
  • 实现安全 nullptr

    我想让我的代码在旧版 C 使用 NULL 的 C 代码 和新的 C 11 标准 使用 nullptr 的 C 代码 上都可编译 我正在使用 GCC 但计划在完成最重要的事情时也为 VS 重新编译整个代码库 我是否应该期望 GCC 和 VS
  • 为什么 Files.lines (和类似的 Streams)不会自动关闭?

    Stream 的 javadoc 指出 流有一个 BaseStream close 方法并实现 AutoCloseable 但几乎所有流实例在使用后实际上并不需要关闭 通常 只有源是 IO 通道的流 例如由 Files lines Path
  • 通过多个索引引用 PHP 数组

    这可能是某种奇怪的较长捷径 如果我的思路有误 请纠正我 我有一个数据矩阵 如下所示 unique id url other random data unique id url other random data unique id url
  • 查找数据框中每行的前 N ​​列

    给定一个包含一个描述性列和 X 个数字列的数据框 对于每一行 我想识别具有较高值的 前 N 列 并将其保存为新数据框上的行 例如 考虑以下数据框 df pd DataFrame df index A B C D E F df option1
  • vb.net 应用程序出现 OutOfMemoryException

    在我的 VB Net 应用程序之一中 我在运行该应用程序时遇到错误 这个错误并不总是出现 所以我也无法重现该错误 也没有重现错误的确切顺序 堆栈 System OutOfMemoryException 内存不足 在 System Drawi
  • 在 Visual Studio 2012 中,Librarian 和 Linker 之间有什么区别?

    我正在将我的项目配置为使用 x86 和 x64 位进行构建 为此 我必须更改不同配置的目标计算机 我试图找到为我的本机 C 库设置目标机器的位置 我发现这个帖子 然而我没有Linker在本机 C 库项目中 我有 配置属性 gt Linker
  • 如何在VS 2010中指定单元测试结果的位置?

    我使用VS2010进行单元测试 有谁知道如何指定 VS 2010 放置 TestResults 的位置 默认情况下 它将 TestResults 文件夹放在解决方案文件夹中 我想将其移到其他地方 谢谢 射线 目前 无法从 IDE 内进行控制
  • PyQt4 到 PyQt5 怎么样?

    我的代码是用 PyQt4 创建的 我想将其转换为 PyQt5 我尝试过一些脚本来转换代码 但是 除了名字之外 什么都没有改变 为了使代码与 PyQt5 一起工作 我需要手动更改什么 这是我的代码的第一部分 import sys from p
  • 交叉引用和垃圾收集

    有一个具有广泛对象图的应用程序 该图主要由一组子图组成 这些子图通过唯一引用连接到图的其余部分 但在内部 每个这样的子图在对象之间都有一定数量的交叉引用 有时这样的子图需要被丢弃 只需将指向该子图的唯一引用设置为 null 就足够了吗 我担
  • QuerySet 对象在 Django Rest Framework 上没有属性“user”

    在 Django Rest Framework 上执行请求时 我无法序列化模型来获取结果 模型 py class Karfarma models Model user models OneToOneField User related na
  • C++:对 Singleton 类中的实例的未定义​​引用

    我目前正在尝试将工厂实现为单例 我实际上使用了单例模式的教科书示例 这是 h 文件 namespace oxygen class ImpFactory public static boost shared ptr
  • 如何保护 Android 应用程序中的秘密字符串?

    在我的 Android 应用程序中 我使用 Microsoft 翻译器 它需要两个字符串 clientId 和 clientSecret 目前 我对这两个字符串进行了硬编码 由于我发现classes dex可以转换为jar 然后 class
  • Python 相当于 Ruby 的each_slice(count)

    python 相当于 Ruby 的什么each slice count 我想为每次迭代从列表中取出 2 个元素 像 1 2 3 4 5 6 我想处理1 2然后在第一次迭代中3 4 then 5 6 当然 还有一种使用索引值的迂回方式 但是有
  • PHPMailer $mail->From 标头不适用于 gmail

    我使用以下代码在使用 PHP 邮件程序类提交表单后发送邮件https github com Synchro PHPMailer 邮件发送并成功接收 唯一不起作用的是以下内容 mail gt From email email是用户将在表单上输
  • 以编程方式将搜索栏快速添加到表格视图中

    我有一个文本字段 它代表一个表视图作为其输入视图 我想在这个表格视图中添加两件事 1 添加搜索栏 2 在表格视图顶部添加取消按钮 class enterYourDealVC UIViewController UITableViewDataS
  • 创建未知数量的循环

    这是我要生成的简单代码 一组的所有可能组合 例子 1 2 3 展示 123 132 213 第231章 第312章 321 我想创建可变数量的 for 循环 让用户确定给定字符串的长度 有谁有想法吗 提前致谢 type TNumber 0
  • Web API 2.1 Windows 身份验证 CORS Firefox

    这是场景 我创建了一个 web api 项目和一个 mvc 项目 如下所示 http www asp net web api overview security enabling cross origin requests in web a