api调用获取失败,CORS,nginx已配置

Posted

技术标签:

【中文标题】api调用获取失败,CORS,nginx已配置【英文标题】:api call get failed, CORS, nginx is confiured 【发布时间】:2020-06-20 01:07:12 【问题描述】:

您好,感谢您的宝贵时间

我有一个在端口 6000 上运行的 dotnet core web api 应用程序和一个 angular 应用程序,使用 nginx 我将 https://api.asoode.com 反向代理到 donet 核心应用程序,并将 https://panel.asoode.com 反向代理到 angular 应用程序

dotnet 核心应用的 nginx 配置是:

location / 
    root   /home/asoode/api;
    proxy_pass         http://45.82.138.126:6000;
    proxy_http_version 1.1;
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection keep-alive;
    proxy_set_header   Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;


    if ($request_method = 'OPTIONS') 
        add_header 'Access-Control-Allow-Origin' 'panel.asoode.com';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain charset=UTF-8';
        add_header 'Content-Length' 0;
        return 204;
    

    if ($request_method = 'POST') 
        add_header 'Access-Control-Allow-Origin' 'panel.asoode.com';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

    

    if ($request_method = 'GET') 
        add_header 'Access-Control-Allow-Origin' 'panel.asoode.com';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
    


我使用了通配符,有和没有协议的域,我仍然收到 CORS 错误,

当我使用邮递员和 OPTION 方法请求 api 时,我得到了这个结果,这表明 panel.asoode.com 是允许的!!!!!!

【问题讨论】:

【参考方案1】:

我有 2 个错误,主要是我的错,因为错误消息说提供的值无效,

1- 需要的协议 2-我的客户端应用程序使用“自定义标头”名称进行授权,我不知道我必须把它放在那里

【讨论】:

以上是关于api调用获取失败,CORS,nginx已配置的主要内容,如果未能解决你的问题,请参考以下文章

nginx,上游,cors 失败

Axios CORS/Preflight 因 Laravel 5.4 API 调用而失败

如何正确配置服务器和浏览器以避免cors错误?获取 API + Node.js

对 https://***.com/jobs/feed 的 http 获取请求因 CORS 失败

Axios 中的 Cors OPTIONS 方法在 Laravel 和 Nginx 中失败

为啥 CORS 适用于 API 请求,但不适用于我的 Nginx 配置中的媒体文件(例如 mp4、webm)?