我已经使用 ASP.NET Core 创建了一个 API,在 Program.cs 中我指定了允许的来源策略,如下所示:
var origins = 'allowedOrigins';
builder.Services.AddCors((options) => {
options.AddPolicy(origins, (policy) => {
policy
.WithOrigins(
'http://10.9.8.50:80',
'http://10.9.8.50:81',
'http://10.9.8.50:7087',
'http://10.9.8.50:5000'
)
.AllowAnyHeader()
.AllowAnyMethod();
});
});
app.UseCors(origins);
我正在使用基本的 JavaScript 获取方法来调用 POST
async function postData(url = '', data = {}) {
let value;
const p = await fetch(url, {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json',
},
redirect: 'follow',
referrerPolicy: 'no-referrer',
body: JSON.stringify(data),
}).then((response) => (value = response.text()));
return value;
}
最近,在我尝试发布对其中一个控制器的逻辑的一些修改后,服务器开始表现得很奇怪。我开始收到“请求标头中没有 Access-Control-Allow-Origin”。
我正在使用 IIS 10 服务器,我尝试在 web.config 中注入 CORS 策略,但我开始收到一条错误消息,指出 Access-Control-Allow-Origin 中只允许使用一个值。
我想知道引发这一切的问题可能是什么,以及解决方案是什么。
谢谢
编辑:我将以下行添加到我的 web.config 文件中
<cors enabled="true" failUnlistedOrigins="false">
<add origin="*" allowed="true" />
</cors>
现在我收到以下错误:
已被 CORS 策略阻止:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段内容类型。
将以下行添加到我的 API 的 web.config 文件中解决了问题。
<cors enabled="true" failUnlistedOrigins="false">
<add origin="*" allowed="true">
<allowHeaders allowAllRequestedHeaders="true"/>
</add>
</cors>