当前位置: 首页 > 知识库问答 >
问题:

无法在API响应上添加Access Control Allow Origin标头

凌恩
2023-03-14

我目前正在转换一个项目从。NET框架进入。网5.

当我到达新系统中的一个endpoint时。NET5项目我得到以下异常。

系统InvalidOperationException:'误用的标头名称,'访问控制允许源'。确保请求头与HttpRequestMessage一起使用,响应头与HttpResponseMessage一起使用,内容头与HttpContent对象一起使用。”

endpoint看起来是这样的,异常被抛出到我在响应内容头中添加“accesscontrolalloworigin”的行上。

 [HttpGet]
            [Route("api/Recommendations/GetRecommendations/{id}/{count}")]
            public HttpResponseMessage GetRecommendations(int id, int count)
            {

                var response = new HttpResponseMessage();
                response.Content = new StringContent(_recommendationsAPIService.GetRecommendations(id, count));
                response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                response.Content.Headers.Add("Access-Control-Allow-Origin", "*");
                response.Content.Headers.Add("Access-Control-Allow-Headers", "Content-Type, Accept, Referer, Authorization,Sec-Fetch-Mode,User-Agent");
                return response;
            }

如何修复此异常?

我不熟悉谁最初写了这个项目,所以有什么理由在响应中添加这些标题吗?

共有1个答案

归俊捷
2023-03-14

您不应该使用内容。Headers属性以添加此类标题。检查文档:这里

表示RFC 2616中定义的内容标题集合。

因此,它应该用于非常特定的标题。

还有两件事:

1-您正在内容上添加标题。消息很清楚,您应该将其添加到响应中。检查这里:在ApiController中添加一个自定义响应头,用于将其添加到响应中

 response.Headers.Add("X-Students-Total-Count", students.Count());

第二,CORs是你需要在全球范围内应用的东西!请在此处查看如何配置api以实现此目的。

太长,读不下去了

public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy(name: MyAllowSpecificOrigins,
                              builder =>
                              {
                                  builder.WithOrigins("http://example.com",
                                                      "http://www.contoso.com");
                              });
        });

        // services.AddResponseCaching();
        services.AddControllers();
    }
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Some code here

        app.UseCors(MyAllowSpecificOrigins);
 类似资料:
  • 在我的应用程序中,我使用的是谷歌地图,首先我是通过标记显示用户当前的位置,并通过一个透明的圆圈显示其准确性,现在当我想添加另一个标记到代表我以前的位置的同一点时,相同的代码对我不起作用,请有人帮我找出代码的错误,我只是想在一个地图视图中添加多个标记 下面是我用来显示两个标记的代码:- 通过使用MapOverlay类,我可以在地图上放置一个显示用户当前位置的pin,但当我使用MapOverlay1显

  • 我正在尝试生成一个带有授权标头的HTTP请求: 但此代码生成的请求不包含授权头: Cache-Control:无缓存 access-control-request-method: 来源:http://localhost:3021 接受语言:en-US,en;q=0.8,he;q=0.6 我做错了什么?

  • 问题内容: 我有一个Flask Web应用程序,它使用render_template如下,我需要在响应中添加一个Content-Security-Policy作为附加的HTTP响应标头。我尝试了以下方法,但都失败了,并给了我500。 1。 2。 这里有什么问题? 在终端上,以localhost:3001的身份访问Web应用程序时,我看到以下内容 127.0.0.1–[2015年4月6日01:45:

  • 我需要在MCV4中的web-api返回一个http状态给用户(在调用post/get方法之后)。 (MCV4的新项目),并选择:WEB-API。 我有VS2010,我查看了从Web Api控制器返回http状态代码的示例,但它对我不起作用。 null 对于以下代码: 我将上面的内容放在类型的类中:apicontroller-responsetype是未知的,实际上,在代码中,我添加了: 但是,re

  • 这是我的代码,我试图通过它发送请求http://localhost:3000/api/post/article使用邮递员,但我收到无法获取的错误。它不用路由器就可以工作。获取,但使用应用程序。所以我认为问题出在路由器上。 这是server.js文件 这是应用程序文件 这是路由器文件 这是控制器文件

  • 问题内容: 我想制作一个与串行设备(手持扫描器)通信的Java应用程序,以便该应用程序与平台无关。我找到了一些代码示例,当我将它们复制到Eclipse中时,它说缺少javax.comm。*。如何在Mac上安装它?以及如何将此库添加到我的应用程序中,以便用户无需安装任何内容? 我希望能够为用户提供一个jar文件和设备,他们应该能够在Windows / Mac / Linux上运行它而几乎不需要配置。