javascript - CORS 策略已阻止从源 '' 访问 '' 处的 XMLHttpRequest:请求中不存在“Access-Control-Allow-Origin”标头
问题描述
我已经开发了 Asp.Net Core 3.1 API 并通过 IIS 部署在服务器上,如果我从 Postman 或浏览器发送 GET/POST 请求,它会按预期工作,但下面的代码会出错。
$.ajax({
type: 'GET',
crossDomain: true,
dataType: 'json',
url: 'myUrl',
success: function(jsondata){
}
})
错误:
从源“http://localhost:63765”访问“http://server:8080/API/GetMethod?currency=INR”的 XMLHttpRequest 已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头存在于请求的资源上。
我使用以下代码C# 代码从我的应用程序中禁用了 CORS :
[DisableCors]
[Route("[controller]")]
[ApiController]
[AllowAnonymous]
public class APIController : ControllerBase
{
启动.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddLog4Net();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors();
app.UseAuthorization();
所以我尝试在控制器级别禁用 CORS,我也尝试过,jsonp
而不是JSON
,它仍然出现相同的错误。
我在这里有两个问题。
- 这是客户端还是服务器端的问题?
- 如何修复错误?
注意:我能够从浏览器和 Postman 发送 GET 请求,但是使用此客户端代码,我遇到了与 CORS 相关的问题。
解决方案
1.应该是服务器端的问题。因为服务器阻止了发出请求的来源。
2.我之前在功能上也遇到过类似的问题。您可以在 startup.cs 中进行一些配置,而不是使用[DisableCors]
and[AllowAnonymous]
详细信息: https ://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-3.1
AllowAnyOrigin
:允许使用任何方案(http 或 https)来自所有来源的 CORS 请求。AllowAnyOrigin 是不安全的,因为任何网站都可以向应用程序发出跨域请求。
推荐的解决方案(如果这不起作用,您可以使用 AllowAnyOrigin):
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
services.AddControllers();
}
推荐阅读
- javascript - 将配置 API 与 dev 和 prod webpack 分开
- java - Saxon 解析器返回错误“java”不被识别为内部或外部命令
- c# - 有什么方法可以在 Visual Studio Debug End 上停用子进程
- bash - 归档文本文件时间顺序之间的差异
- docker - Docker compose 不支持的配置选项
- reactjs - 未找到模块:错误:无法解析 `pp-shared-components` - React Jenkins 中的组件共享库
- c++ - cv::convexHull 能否应用于双精度点数据
- mql4 - 如何自动重新调整当前图表上显示的价格范围?(MT4 EA)
- tree - 在 SML 中查找树的所有有效地址
- python - pandas DataFrame 中的条件操作