window.open
(クロスブラウザ)によって送信されたHTTPヘッダーを制御できますか?
そうでない場合、ポップアップウィンドウ内にカスタムヘッダーを使用してリクエストを発行するページを何らかの方法でwindow.open
できますか?
Unningなハックが必要です。
Window.open(ブラウザ間)によって送信されるHTTPヘッダーを制御できますか?
いや
そうでない場合、どういうわけかwindow.openページを開き、ポップアップウィンドウ内にカスタムヘッダーを含むリクエストを発行できますか?
Unningなハックが必要です...
可能性のある解決策が機能するかどうかを尋ねるのではなく、問題を説明すると役立つ場合があります。
サーバー側を制御している場合、クエリ文字列にヘッダー値を設定し、そのように送信することは可能ですか?そうすれば、ヘッダーで見つからない場合はクエリ文字列から解析できます。
ただのアイデア...そして、あなたはcなハックを求めました:)
カスタムヘッダーを直接追加することはできません window.open() ポップアップウィンドウで動作しますが、2つの解決策があります
- Ajaxメソッドを記述して、特定のURLをヘッダー付きの別のHTMLファイルで呼び出し、そのHTMLを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) {
} });
_
htmlを呼び出す
_window.open('*\abc.html')
_
ここで、要求されたURLでCORSが有効になっていない場合、CORSポリシーは要求をブロックできます。
- カスタムヘッダーを使用して要求を作成し、その特定のURLにリダイレクトする応答を返すサーバー側プログラムをトリガーするURLを要求できます。
Java Servlet(/ requestURL)でこのリクエストを作成するとします
`
_ 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");
}
_
`
window.open('/requestURL')
でサーブレットを呼び出します
window.open
を除くXMLHttpResponse
を使用して最高のanwserが記述したため、abstracts-anwserをインスタンスとして作成します。
メインのJsファイルは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
}