.NET core 3.1 报错has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
时间: 2023-10-17 13:26:20 浏览: 260
在.NET Core 3.1中,当你在前端发起一个跨域请求时,如果没有在后端接口的响应头中设置'Access-Control-Allow-Origin',那么就会出现报错信息"has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource." 。
这是因为浏览器实施了同源策略,限制了跨域请求。跨域请求是指前端代码在一个域名下发起请求,但是请求的目标地址与当前域名不一致。而为了保护用户的安全,浏览器默认不允许这种跨域请求,除非在服务器端设置了相应的响应头,即'Access-Control-Allow-Origin'。这个响应头指定了允许跨域请求的源,可以是具体的域名或者通配符"*"表示允许所有源。
解决这个问题的方法有几种:
1. 在后端代码中设置响应头,添加'Access-Control-Allow-Origin',并指定允许跨域请求的源。例如,在.NET Core中可以通过使用CORS中间件来实现这个设置。在Startup.cs文件的ConfigureServices方法中,添加以下代码:
services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
然后在Configure方法中,使用UseCors方法将该策略应用到所有请求上:
app.UseCors("AllowAll");
2. 如果只允许特定的域名发起跨域请求,可以在设置响应头时指定具体的域名,而不是使用通配符"*"。
3. 如果你使用的是第三方的库或框架,例如jQuery,在发起请求时,可以通过设置xhrFields属性来添加'Access-Control-Allow-Origin'的请求头,例如:
$.ajax({
url: 'http://localhost:52156/api/Person/1',
type: 'GET',
crossDomain: true,
xhrFields: {
withCredentials: true
},
success: function (data) {
console.log(data);
}
});
通过以上的方法,你可以解决.NET Core 3.1报错"has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource."的问题。 <span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [解决前后端跨域报错:has been blocked by CORS policy: No ‘Access-Control-Allow-Origin](https://blog.csdn.net/wsaicyj/article/details/127814374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [asp.net core 3.1 解决跨域的问题](https://blog.csdn.net/qq_25086397/article/details/104412767)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文