我在 C# 中的程式對我的 API 的請求出現問題,它給了我一個 CORS 錯誤(從網路它可以作業,因為我的本地 IP 它在白名單中,但從程式它給了我一個錯誤 cors要求)。
該 api 是在 Express 中創建的。
我的科爾:
const dominiosPermitidos = [url];
const corsOptions = {
origin: function(origin, callback) {
console.log(origin);
if (dominiosPermitidos.indexOf(origin) !== -1) {
//El origen del request esta permitido
callback(null, true);
} else {
callback(new Error('No permitido por Cors'))
}
}
}
app.use(cors(corsOptions));
c#中的呼叫:
url = "127.0.0.1/api/datos";
HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
Stream myStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myStream);
//Leemos los datos
string Datos = HttpUtility.HtmlDecode(myStreamReader.ReadToEnd());
dynamic data = JsonConvert.DeserializeObject(Datos);
return data;
錯誤 c# 錯誤
錯誤api 錯誤
我應該停用 Cors 嗎?
謝謝
我試圖將我的本地 IP 放入白名單,但是當我從 C# 程式呼叫 API 時,CORS 給了我一個錯誤
uj5u.com熱心網友回復:
您的 C# 程式似乎沒有發送來源,這很好,因為它不是瀏覽器。但是,如果 CORS 將阻止回應到達瀏覽器,則由于您的服務器配置為提前出錯,因此您會從它那里收到一個錯誤(如果它來自瀏覽器,您通常無法讀取)。
如果您查看“配置帶有動態源的 CORS”部分中的https://www.npmjs.com/package/cors,您會看到他們在第二個示例中放置了一個“|| !origin”原因,所以如果它來自服務器,服務器會繼續處理它。所以你應該能夠像這樣改變你的 Node.js 服務器代碼:
const dominiosPermitidos = [url];
const corsOptions = {
origin: function(origin, callback) {
console.log(origin);
if (dominiosPermitidos.indexOf(origin) !== -1 || (! origin)) {
//El origen del request esta permitido
callback(null, true);
} else {
callback(new Error('No permitido por Cors'))
}
}
}
app.use(cors(corsOptions));
您可能還會發現這很有幫助:https ://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
希望這可以幫助。
編輯:因為我不能寫評論,所以我必須在這里做。您可以在服務器上禁用 CORS,但這意味著您在其他來源的網站將無法發送請求。但我可能誤解了,您可能永遠不會從瀏覽器向 API 發送請求,在這種情況下,您可以洗掉所有 CORS 邏輯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/532677.html
上一篇:具有大量資料的網路爬蟲表
下一篇:收到錯誤時TWSAPI凍結