本地startup.cs里代碼如下:
//允許跨域
services.AddCors(p =>
{
p.AddPolicy("vipxwkservice", option =>
{
var listorigins = Configuration.GetSection("SiteConfig").GetSection("Origins").Get<string[]>();
#if DEBUG
option.AllowAnyOrigin().AllowAnyMethod()
.AllowAnyHeader()
.WithExposedHeaders(VIPKeys.SESSION_CODE);
#else
option.WithOrigins(listorigins)
.AllowAnyMethod()
.AllowAnyHeader()
.WithExposedHeaders(Common.VIPKeys.SESSION_CODE);
#endif
});
});
app.UseCookiePolicy();
app.UseSession();
app.UseRouting();
app.UseCors("vipxwkservice");
app.UseAuthentication();
app.UseEndpoints(endpoints =>
{
//跨域需添加RequireCors方法,cors是在ConfigureServices方法中配置的跨域策略名稱
endpoints.MapControllers().RequireCors("vipxwkservice");
});
"SiteConfig": {
"DomainModules": [ "User", "Application", "Admin" ],
"Origins": [
"http://localhost:50592",
"http://192.168.0.23:10030"
],
"AuthorizationConfig": {
"Audience": "abc",
"Issuer": "abc",
"Expires": 43200, //過期分鐘數
"JwtSecurityKey": "www.abc.com@!##$%##" //密匙長度大于等于16位
}
}
以上代碼在本機配置API為http://192.168.0.23:10031 ,web站點http://192.168.0.23:10030能夠正常跨域請求,但安裝到一個全新服務器windows2012R2上部署成功后,跨域請求一直被攔截。
回應頭里一直沒有
Access-Control-Allow-Origin
Access-Control-Expose-Headers
請教各位有經驗的指點迷惑
uj5u.com熱心網友回復:
這么寫 試試public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddMvc(options =>
{
options.Filters.Add<MyApiFilter>();
});
// 設定允許所有來源跨域
services.AddCors(options => options.AddPolicy("CorsPolicy",
builder =>
{
builder.AllowAnyMethod()
.AllowAnyHeader()
.SetIsOriginAllowed(_ => true) // =AllowAnyOrigin()
.AllowCredentials();
}));
// 使用跨域配置
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors("CorsPolicy");
ILoggerRepository repository = LogManager.CreateRepository("NETCoreRepository");
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
//全域路由配置
endpoints.MapControllerRoute(name: "default",
pattern: "{controller=Index}/{action=Index}/{id?}"
);
});
}
}
uj5u.com熱心網友回復:
似乎要打開允許SESSION功能才可以。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/9850.html
標籤:ASP.NET
