簡體   English   中英

在 Heroku 上向 API 發送請求,在 Postman 上工作,但不在 React Heroku 應用程序上工作

[英]POST request to API on Heroku working on Postman but not on React Heroku app

我在https://api.MYCUSTOMDOMAIN.ca上的 Heroku 上有一個 API,我嘗試通過 https://www.MYCUSTOMDOMAIN.ca 發送一個 axios POST 請求到https://www.MYCUSTOMDOMAIN.ca ,它變成了一個 84 GET as6 OPTION2 記錄的 84 a6 OPTION2請求,但通過 Postman 向 API 發出的相同 POST 請求按預期工作。

我玩過 CORS,認為它可能與預檢有關,但似乎沒有做任何事情。

由於 HTTP 到 HTTPS 重定向,我還看到關於 POST 請求更改為 GET 請求的其他文章的評論。 如果這是可能的原因,我將如何防止丟失數據和更改 POST 發生?

通過https://www.MYCUSTOMDOMAIN.ca的請求標頭

通過 www.MYCUSTOMDOMAIN.ca 發出的請求標頭

來自https://api.MYCUSTOMDOMAIN.ca的響應標頭

響應頭通過

Heroku 應用日志樣本

Heroku 應用程序日志

編輯:根據要求,這是我在應用程序入口點的 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));

您可以嘗試全部允許並完全打開它。

// CORS //
const cors = require('cors');
app.use(cors());
app.options('*', cors());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM