在Herman上运行Postman的API上的POST请求,但在React Heroku应用上不起作用

问题描述

我在https://api.MYCUSTOMDOMAIN.ca上托管了Heroku上的API,我尝试通过https://www.MYCUSTOMDOMAIN.ca向其发送axios POST请求,该请求变成了GET请求,并作为OPTIONS请求登录到Heroku中。通过Postman向API发出的POST请求可以正常工作。

我一直在与CORS一起玩耍,认为它可能与预检有关,但是似乎没有做任何事情。

在其他文章中,我也看到了有关由于HTTP到HTTPS重定向而将POST请求更改为GET请求的评论。如果这是可能的原因,我该如何防止丢失数据和更改后的POST发生?

通过https://www.MYCUSTOMDOMAIN.ca制作的请求标头

Request headers made through www.MYCUSTOMDOMAIN.ca

来自https://api.MYCUSTOMDOMAIN.ca

的响应标头

Response headers made through

Heroku应用日志示例

Heroku app logs

编辑:根据要求,这是我在应用程序入口点中的CORS设置。 https://www.MYCUSTOMDOMAIN.cacorsWhitelist中指定的允许来源之一。

import express from "express";
import cors,{ CorsOptions } from "cors";

const app = express();

const corsWhitelist: string[] = [ /* allowed origins */ ];

const corsOptions: CorsOptions = {
    origin: (origin: string | undefined,callback: Function) => {
        if(typeof(origin) === "string" && corsWhitelist.indexOf(origin) !== -1) callback(null,true);
        else callback(null,false);
    },credentials: true,methods: ["GET","POST","PUT","PATCH","DELETE","HEAD","OPTION"],optionsSuccessstatus: 204
};

app.use(cors(corsOptions));

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)