![](/img/trans.png)
[英]Net Core / Angular CORS error on some Api calls but not others
[英]AllowAnyMethod works for some API calls but not for others
我有這個問題中提到的表格,但是提交后我得到了
跨域請求被阻止:同源策略禁止讀取位於http:// localhost:1113 / api / loans的遠程資源。 (原因:CORS標頭“ Access-Control-Allow-Origin”缺失)。
和
跨域請求被阻止:同源策略禁止讀取位於http:// localhost:1113 / api / loans的遠程資源。 (原因:CORS請求未成功)。
我之前通過將其添加到API的“ Startup
Configure
中來解決了另一個API調用的問題:
app.UseCors(options => options.WithOrigins("*").AllowAnyMethod());
但是現在由於某種原因,它阻止了操作所在的呼叫
// POST api/loans
[HttpPost]
public void Post(Loan loan)
{
_context.Loans.Add(loan);
_context.SaveChanges();
}
為什么?
嘗試使用[FromBody]
public void Post([FromBody] Loan loan)
當您嘗試使用JSON.stringify而不是直接發送模型時,
this.http.post('http://localhost:1113/api/loans', JSON.stringify(this.model), config).subscribe(data => {
console.log(data);
});
這是一個模糊的問題,因此我將給出一些提示。
首先通過打開所有異常開始。在cors發生之前,您很可能會遇到異常,因此您的應用程序在返回錯誤響應之前,才可以添加cors標頭。
.Net-Core require屬性用於解決如何對數據進行模型綁定。 因此,您的http post方法應該要求[FromForm]或[FromBody]屬性
[HttpPost] public void Post([FromForm] Loan loan) { _context.Loans.Add(loan); _context.SaveChanges(); }
確保您實際上正在使用自己的cors政策。 除非您使用舊版本的.Net Core,否則您應該通過Configure Services方法而不是configure方法來實現cors策略
嘗試像這樣執行您的政策:
services.AddCors(options =>
{
options.AddPolicy(DEFAULT_POLICY_NAME, policy =>
{
policy.SetIsOriginAllowedToAllowWildcardSubdomains()
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
然后在您的configure方法中,您只需使用策略名稱
app.UseCors(DEFAULT_POLICY_NAME);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.