Kann ich die HTTP-Header steuern, die von window.open
(Browserübergreifend) gesendet werden?
Wenn nicht, kann ich irgendwie eine Seite window.open
en, die dann meine Anfrage mit benutzerdefinierten Kopfzeilen im eingeblendeten Fenster ausgibt?
Ich brauche ein paar listige Hacks.
Kann ich die HTTP-Header steuern, die von window.open (Browserübergreifend) gesendet werden?
Nein
Wenn nicht, kann ich irgendwie window.open, eine Seite, die dann meine Anfrage mit benutzerdefinierten Kopfzeilen im eingeblendeten Fenster ausgibt?
Ich brauche ein paar listige Hacks ...
Es könnte hilfreich sein, wenn Sie das Problem beschrieben haben, anstatt zu fragen, ob mögliche Lösungen funktionieren.
Wenn Sie die Serverseite steuern, kann es möglich sein, den Header-Wert in der Abfragezeichenfolge festzulegen und so zu senden? Auf diese Weise könnten Sie ihn aus der Abfragezeichenfolge analysieren, wenn er nicht in den Kopfzeilen gefunden wird.
Nur eine Idee ... Und du hast nach einem schlauen Hack gefragt :)
Mit können Sie keine benutzerdefinierten Header direkt hinzufügen window.open () in Popup-Fenster aber zu arbeiten, dass wir zwei mögliche Lösungen haben
- Schreiben Sie die Ajax-Methode, um diese bestimmte URL mit Kopfzeilen in einer separaten HTML-Datei aufzurufen, und verwenden Sie diese HTML als URL in
<i>window.open()</i>
abc.html
$.ajax({
url: "ORIGIONAL_URL",
type: 'GET',
dataType: 'json',
headers: {
Authorization : 'Bearer ' + data.id_token,
AuthorizationCheck : 'AccessCode ' +data.checkSum ,
ContentType :'application/json'
},
success: function (result) {
console.log(result);
},
error: function (error) {
} });
rufen Sie HTML auf
window.open('*\abc.html')
hier kann die CORS-Richtlinie die Anforderung blockieren, wenn CORS in der angeforderten URL nicht aktiviert ist.
- Sie können eine URL anfordern, die ein serverseitiges Programm auslöst, das die Anforderung mit benutzerdefinierten Headern erstellt und dann die Antwort zurückgibt, die zu dieser bestimmten URL umleitet.
Angenommen, in Java Servlet (/ requestURL) stellen wir diese Anfrage
`
String[] responseHeader= new String[2];
responseHeader[0] = "Bearer " + id_token;
responseHeader[1] = "AccessCode " + checkSum;
String url = "ORIGIONAL_URL";
URL obj = new URL(url);
HttpURLConnection urlConnection = (HttpURLConnection) obj.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setRequestProperty("Accept", "application/json");
urlConnection.setRequestProperty("Authorization", responseHeader[0]);
urlConnection.setRequestProperty("AuthorizationCheck", responseHeader[1]);
int responseCode = urlConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new
InputStreamReader(urlConnection.getInputStream()));
String inputLine;
StringBuffer response1 = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response1.append(inputLine);
}
in.close();
response.sendRedirect(response1.toString());
// print result
System.out.println(response1.toString());
} else {
System.out.println("GET request not worked");
}
`
servlet in window.open('/requestURL')
aufrufen
Als beste Antwort habe ich mit XMLHttpResponse
außer window.open
geschrieben, und ich mache den abstracts-anwser als Instanz.
Die Haupt-Js-Datei ist download.js
Download-JS
// var download_url = window.BASE_URL+ "/waf/p1/download_rules";
var download_url = window.BASE_URL+ "/waf/p1/download_logs_by_dt";
function download33() {
var sender_data = {"start_time":"2018-10-9", "end_time":"2018-10-17"};
var x=new XMLHttpRequest();
x.open("POST", download_url, true);
x.setRequestHeader("Content-type","application/json");
// x.setRequestHeader("Access-Control-Allow-Origin", "*");
x.setRequestHeader("Authorization", "JWT " + localStorage.token );
x.responseType = 'blob';
x.onload=function(e){download(x.response, "test211.Zip", "application/Zip" ); }
x.send( JSON.stringify(sender_data) ); // post-data
}