Estoy tratando de abrir un método de página de afeitar en mi javascript y no estoy seguro de por qué se abre en http, no en https, aunque la URL está configurada en https.
A continuación se muestra mi código:
JavaScript:
function openWindowWithPost(url, data) { var form = document.createElement("form"); form.target = "_blank"; form.method = "POST"; form.action = url; form.style.display = "none"; for (var key in data) { var input = document.createElement("input"); input.type = "hidden"; input.name = key; input.value = data[key]; form.appendChild(input); } var input = document.createElement("input"); var token = $('input:hidden[name="__RequestVerificationToken"]').val(); input.name = "__RequestVerificationToken"; input.type = "hidden"; input.value = token; form.appendChild(input); document.body.appendChild(form); form.submit(); document.body.removeChild(form); } function ButtonClickedEvent(){ var inputJSON = '{"id": 1}'; var url = location.protocol + '//' + location.host + '/Report/?handler=BatchReport'; console.log('url: ' + url); openWindowWithPost(url, JSON.stringify(inputJSON)); }
Razor Page: Código detrás:
[Authorize] [HttpPost] public async Task<string> OnPostBatchReport([FromBody] InputParameter parametersJSON) { var somestring = await getstring(parametersJSON); return somestring ; }
Inicio.cs:
public void ConfigureServices(IServiceCollection services) { services.AddRazorPages().AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null); services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN"); services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.Unspecified; options.Secure = CookieSecurePolicy.SameAsRequest; options.HandleSameSiteCookieCompatibility(); }); // Sign-in users with the Microsoft identity platform services.AddMicrosoftIdentityWebAppAuthentication(Configuration); services.AddControllersWithViews(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI(); }
Mi sitio web está alojado en https://localhost:12345 y cuando hago clic en el botón, llamo a la función de javascript ButtonClickedEvent para abrir la página del informe en una pestaña separada. Esta pestaña tiene el protocolo como http, no https.
Cualquier ayuda es apreciada.
Con respecto a la aplicación hostURL
, generalmente depende de la configuración del archivo launchsettings.json
.
Para resolver este problema, debe configurar
applicationUrl
enlaunchsettings.json
como desee mientras se ejecuta la aplicación.
launchsettings.json:
Espero que te haya guiado en consecuencia.