微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

反应js请求和jwt的Cors问题

如何解决反应js请求和jwt的Cors问题

我正在尝试从asp.net core 3.1响应获取数据,所以我以请求登录获取jwt令牌。之后,我想发送一个从api获取数据的请求,但它会导致“预检请求”从源“ http:// localhost:3000”访问“ https:// localhost:44328 / Address”的访问已被阻止CORS策略:对预检请求的响应未通过访问控制检查:请求的资源上不存在“ Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”,以在禁用CORS的情况下获取资源。 apiAddress.js:24 GET https:// localhost:44328 / Address net :: ERR_Failed“,我使用Visual Studio localhost作为api服务器,并按如下所示配置启动:

     //in ConfigureServices
        services.AddCors(options =>
        {
            options.AddPolicy(name: AllowedOrigins,builder =>
                              {
                                  builder
                                        .AllowAnyOrigin()
                                        .AllowAnyMethod()
                                        .AllowAnyHeader()
                                        .SetIsOriginAllowed(hostName => true);

                              });
        });
//in configure
    app.UseCors(AllowedOrigins);

我的提取请求类似于以下reactjs:

    const response = await fetch(url,{
        'method': 'GET','mode': 'cors','credentials': 'include','headers': {
            'Content-Type': 'application/json; charset=utf-8;',//'Content-Type':'application/x-www-form-urlencoded','Authorization':`bearer ${token}`
        }
    });

最后我的控制器如下:

[ApiController,EnableCors("AllowedOrigins"),Authorize,Route("[controller]")]
public class AddressController : ControllerBase

哪里出了问题,我必须提到其他没有[Authorize]属性正常工作的动作,但是使用它的动作不起作用? 有人提到我应该在iis中启用选项,但没有说明如何?

解决方法

您可能需要在IIS上启用CORS。以下是操作步骤。

  1. 打开Internet信息服务(IIS)管理器。
  2. 右键单击要启用CORS的站点,然后转到“属性”。
  3. 更改为“ HTTP标头”标签。
  4. 在“自定义HTTP标头”部分中,单击“添加”。
  5. 输入Access-Control-Allow-Origin作为标题名称。
  6. 输入*作为标题值。
  7. 单击确定两次。
,

对预检请求的响应未通过访问控制检查:....

没有[Authorize]属性的其他操作正常,但没有作用

this doc中,您将找到:

CORS预检请求用于确定服务器是否将请求的资源设置为跨源共享。并且OPTIONS请求始终是匿名的,如果未启用匿名身份验证,服务器将无法正确响应预检请求。

在IIS服务器上托管时,您可以尝试安装IIS CORS module并配置站点/应用程序以使其正常运行。

此外,如果您想使其与IIS Express一起在本地运行,出于对CORS进行测试的目的,您可以尝试允许匿名访问。

或者使用kestrel运行它并编写自定义中间件以正确响应预检请求。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?