为 Angular 2 身份验证启用 WebAPI CORS

2023-12-04

我在 stackoverflow 上看到了一些答案,但我迷路了。

我有 webapi 2 + 独立的 Angular 2 webapi项目来自模板。我唯一改变的是我添加了 CORS 并将以下行添加到 IdentityConfig.cs > ApplicationUserManager Create()

context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "http://localhost:3000" });

这里我有模板的所有标准:

[Authorize]
public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
            return new string[] { "value1", "value2" };
    }

在客户端,我有获取访问令牌的功能,该功能可以正常工作:

authenticate(loginInfo: Login): boolean {

        let headers = new Headers(); 
        headers.append('Content-Type', 'application/x-www-form-urlencoded');
        this.http.post(this.baseUrl + 'Token', 'grant_type=password&[email protected]&password=Password2!',
            {
                headers: headers
            })
            .subscribe(
                data => this.saveAuthToken(<AccessToken>(data.json())),
                err => this.handleError(err),
                () => console.log('authentication Complete')
        );           

        return true;        
    }

并获取函数,无需身份验证即可正常工作(注释代码):

get(url: string) {         

    var jwt = sessionStorage.getItem(this.idTokenName);
    var authHeader = new Headers();       
    if (jwt) {
        authHeader.append('Authorization', 'Bearer ' + jwt);
    }        

    return this.http.get(this.apiUrl + url, {
            headers: authHeader
        })
        .map(res => res.json())
        .catch(this.handleError);       

    //return this.http.get(this.apiUrl + url)
    //    .map(res => res.json())
    //    .catch(this.handleError);   
}  

但是当我尝试添加授权标头服务器返回时:

XMLHttpRequest cannot load http://localhost:3868/api/values. Response for preflight has invalid HTTP status code 405

如何让用户通过 Angular 正确进行身份验证?


  1. 安装包 Microsoft.Owin.Cors
  2. 添加到App_Start>Startup.Auth.cs>ConfigureAuth(IAppBuilder应用程序)

       app.UseCors(CorsOptions.AllowAll);
    

只有一行。就这样。

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

为 Angular 2 身份验证启用 WebAPI CORS 的相关文章

随机推荐

  • .NET 中的性能分析

    我写了一个类 它使用Stopwatch分析方法和for foreach循环 和for and foreach循环它针对一个标准循环进行测试Parallel For or Parallel ForEach执行 您可以像这样编写性能测试 Met
  • 有没有办法通过 REST API 检索 Office365 OneDrive 已删除项目(文件/文件夹)的元?

    我正在寻找一种方法来检索已删除项目 文件 文件夹 的元 我能够获取更改日志 表明已对某个项目执行了特定操作 并且如果该项目尚未被删除 我也能够检索该项目本身 当该项目被删除时就会出现问题 在这种情况下 我只知道该项目的 ID 当我查询该项目
  • 使用“grep -f”列出不匹配的条目

    以下命令给出了匹配表达式的列表 grep f tmp list Filename gt tmp output The list然后解析文件并用于搜索Filename 对于解析后的字符串 然后将结果保存到output 我将如何输出解析后的字符
  • Pandas excel导入更改日期格式

    我正在学习 python 3 6 with anaconda 以进行学习 我使用 pandas 导入一个包含 2 列的 xls 文件 日期 dd mm yyyy 和价格 但 pandas 改变了日期格式 xls file pd read e
  • 如何处理Java中的链接错误?

    在开发一个高度基于 XML 的 Java 应用程序时 我最近在 Ubuntu Linux 上遇到了一个有趣的问题 我的应用程序 使用Java插件框架 似乎无法转换dom4j 创建 XML 文档Batik sSVG 规范的实现 在控制台上 我
  • 如何在 Windows 控制台上输出 Unicode 字符串

    已经有一些与此问题相关的问题 我认为我的问题有点不同 因为我没有实际的问题 我只是出于学术兴趣而问 我知道 Windows 的 UTF 16 实现有时与 Unicode 标准 例如排序规则 相矛盾 或者更接近旧的 UCS 2 而不是 UTF
  • C++:如何在使用 getline() 和 ifstream 对象从文件中读取行时跳过第一个空格?

    我有一个名为 items dat 的文件 其内容按 itemID itemPrice 和 itemName 的顺序排列 item0001 500 00 item1 name1 with spaces item0002 500 00 item
  • 保存 VBA 之前检查文件夹权限

    我创建了一个用户表单 它将打开一个 Excel 文件 打开并隐藏 Excel 关闭用户表单时将保存并关闭 Excel 文件 然而 Excel 文件有两种类型的用户 编辑者 将数据输入文件的人员 查看者 正在查看文件的人 包含 Excel 文
  • 使用MSBuild构建EXE时如何指定文件版本?

    我正在尝试使用 MSBuild Delphi 2010 编译 EXE 我尝试了以下方法 MSBuild exe t Clean Build p config Release ExtraDefines CodeTest property Fi
  • 查找c++执行时间

    我很好奇 C 中是否有内置函数来测量执行时间 我现在使用的是 Windows 在 Linux 中这非常简单 据我所知 Windows 上最好的方法是使用QueryPerformanceCounter and QueryPerformance
  • 我是否需要心跳来保持 TCP 连接打开?

    我有两个通过 TCP IP 进行通信的组件 组件 A 充当服务器 侦听器 组件 B 充当客户端 两人应该尽快沟通 任何时候只能有一个连接 尽管这是这个问题的一部分 我公司的一位高级开发人员表示 我需要在两个组件之间使用应用程序级心跳来确保连
  • SVN 中工作副本 XXX 已锁定且清理失败

    当我执行以下操作时出现此错误svn update 工作副本 XXXXXXXX 已锁定 请 执行 清理 命令 当我运行清理时 我得到 清理无法处理 以下路径 XXXXXXX 我该如何摆脱这个循环 一种方法是 将编辑的项目复制到另一个位置 删除
  • 为什么我需要对这个 .rds 文件使用 mode = wb 和 download.file() ?

    我被挂断了闪亮的应用程序教程第 5 课因为我无法打开counties rds file readRDS threw error reading from connection 我发现我可以打开 rds如果我下载它就好了download fi
  • 用python计算股票的平衡交易量(OBV)

    我正在用 python 做我的第一个项目 我有一个名为 df 的 pandas 数据框 有两列 close 和 volume 我想根据前两列计算 获取 OBV 列 公式如下 如果收盘价高于前一收盘价 则 当前 OBC 先前 OBC 当前交易
  • 将控制台分成两部分以获得两个输出

    我正在创建一个控制台应用程序 我希望有两个输出和一个输入 原因是一个输出始终可见 This is the first output Text flows upwards just like a regular console applica
  • c中opencv中轮廓/对象的质心?

    有没有一些更好的方法可以在 opencv 中找到轮廓的质心 而不使用内置函数 虽然 Sonaten 的答案是完全正确的 但有一个简单的方法可以做到这一点 使用专用的 opencv 函数 moments http opencv itseez
  • 使用 javascript 更改文本区域换行

    对于我的小型 wiki 应用程序 我主要需要使用文本区域来编辑内容以使用软 或虚拟 换行 但是 在某些情况下 最好不包装内容 我想我可以通过简单地使用一个按钮来关闭包装来做到这一点 这是简化的代码
  • 将自定义图标添加到 Woocommerce 购物车和结帐中的运输选项

    我想将图标添加到 Woocommerce 购物车和结账中的运输选项 例如 在 本地取货 选项中 我想在选项旁边显示一个小商店图标 如下所示 https ibb co jz0jJgk 我尝试在 Woocommerce gt 设置 gt 运输选
  • 谁创建了索引?

    是否可以检查谁在 SQL Server 上创建了索引 我只找到列出时间的脚本 select STATS DATE so object id index id StatsDate si name IndexName schema name s
  • 为 Angular 2 身份验证启用 WebAPI CORS

    我在 stackoverflow 上看到了一些答案 但我迷路了 我有 webapi 2 独立的 Angular 2 webapi项目来自模板 我唯一改变的是我添加了 CORS 并将以下行添加到 IdentityConfig cs gt Ap