ASP.NET MVC-App innerhalb eines IFrames in einem benutzerdefinierten PowerBI-Visual, führen Sie JQuery aus

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: ASP.NET MVC-App innerhalb eines IFrames in einem benutzerdefinierten PowerBI-Visual, führen Sie JQuery aus

by Guest » 21 Dec 2024, 12:35

Meine ASP.NET MVC-App wird in einem IFrame gehostet. Aufgrund der langen Antwortzeit des Servers zeige ich im Beitrag ein Wartesymbol an. Das heißt, mein Beitrag basiert auf jQuery und JSON zu und von meinem Controller. Das Ausführen meiner ASP.NET MVC-App funktioniert eigenständig einwandfrei, jedoch überhaupt nicht innerhalb eines Iframes.
Der IFrame befindet sich in einer benutzerdefinierten Visualisierung in PowerBI.
In Global.asax habe ich diesen Code:
AntiForgeryConfig.SuppressXFrameOptionsHeader = true;

In meinem Controller habe ich Folgendes entfernt:
[ValidateAntiForgeryToken]

Meiner Ansicht nach habe ich Folgendes entfernt:
@Html.AntiForgeryToken()

Beim Posten erhalte ich diese Antwortfehler

OPTIONEN https://myurl/Edit/707057500079987300 401 (Nicht autorisiert )
Antwort auf eine Preflight-Anfrage besteht die Zugriffskontrollprüfung nicht: Auf der angeforderten Ressource ist kein Header „Access-Control-Allow-Origin“ vorhanden. Der Zugriff auf Origin „null“ ist daher nicht gestattet. Die Antwort hatte den HTTP-Statuscode 401.

Ich habe meinen Controller und meine Ansicht geändert, um eine GET-Anfrage zu verwenden. Aber das gleiche Ergebnis, http-Fehler 401.
Mein Ziel ist nicht, dass Site A mit Site B interagiert, sondern es nur anzuzeigen.
Site B, meine ASP.NET MVC-App, soll einige serverseitige Aufgaben erledigen und das Ergebnis anzeigen.
Durch Festlegen von AntiForgeryConfig.SuppressXFrameOptionsHeader = true und Die Bestätigung, dass ich dachte, meine Ziele seien entfernt, wurde entfernt machbar.
Die Anfrage:
OPTIONS /AENettMicrofunctions/InstantReading/GetDetails/707057500079332843 HTTP/1.1
Host: aensmartgrid.ae.no
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Access-Control-Request-Headers: x-requested-with
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: nb-NO,nb;q=0.9,no;q=0.8,nn;q=0.7,en-US;q=0.6,en;q=0.5

Die Antwort
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.5
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Thu, 21 Jun 2018 13:59:02 GMT
ntCoent-Length: 5015
Content-Encoding: gzip
Content-Length: 1651

Wie unten vorgeschlagen, habe ich Folgendes zu web.config hinzugefügt











Was mache ich hier falsch?
Warum ist das http-Verb OPTION, wenn es in der jQuery eindeutig ein GET ist? Was fehlt mir?
Der Code für meine Ansicht ist unten.
Grüße
Frode
@model AE.Net.MicrofunctionViews.Models.InstantReadingRequest

@{
ViewBag.Title = "Momentanavlesning spenning";
}

@Html.ValidationSummary(false, "", new { @class = "text-danger" })

@Html.Label("model.UsagePoint", "Målepunkt: ")
@Html.DisplayFor(model => model.UsagePoint)
@Html.HiddenFor(model => model.UsagePoint, "UsagePointId")

Image

@Html.Label("model.ReadingResult", "Resultat: ")
Image
Image

@Html.TextAreaFor(model => model.ReadingResult, new { @cols = "50", @rows = "4" })



@section Scripts {
@Scripts.Render("~/bundles/jqueryval")



$(document).ready(function () {

// Hide the "busy" Gif at load:
$("#divProcessing").show();
$("#divData").hide();
$("#GreenSmiley").hide();
$("#RedSmiley").hide();

var usagePointId = $("#UsagePoint").val();
var url = "@Url.Action("GetDetails", "InstantReading")/" + usagePointId;
$.ajax({
url: url,
type: "GET",
dataType: "json",
success: function (resp) {
// Hide the "busy" gif:
$("#divProcessing").hide();
$("#divData").show();
if (resp.errors) {

var $summaryUl = $(".validation-summary-valid").find("ul");
$summaryUl.empty();
$.each(resp.errors,
function (a, b) {
$summaryUl.append($("").text(b.Errors[0].ErrorMessage));
});
}
else {
$("#ReadingResult").val(resp.ReadingResult);
var ResultHaveVoltageReading = resp.ResultHaveVoltageReading;
if (ResultHaveVoltageReading) {
var ResultVoltageReadingIsOk = resp.ResultVoltageReadingIsOk;
if (ResultVoltageReadingIsOk) {
$("#GreenSmiley").show();

}
else {
$("#RedSmiley").show();
}
}
}
},
error: function (xhr) {
$("#divProcessing").hide();
$("#divData").show();
$("#ReadingResult").val(xhr.val);
}
})
});

}

Top