[英]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
的請求標頭
來自https://api.MYCUSTOMDOMAIN.ca的響應標頭
Heroku 應用日志樣本
編輯:根據要求,這是我在應用程序入口點的 CORS 設置。 https://www.MYCUSTOMDOMAIN.ca
是corsWhitelist
中指定的允許來源之一。
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.