سؤال

هل يمكنني التحكم في رؤوس HTTP المرسلة بواسطة window.open (عبر المتصفح)؟

إذا لم يكن الأمر كذلك ، فهل يمكنني بطريقة ما window.open الصفحة التي تصدر بعد ذلك طلبي برؤوس مخصصة داخل نافذتها المطلقة؟

أحتاج إلى بعض الاختراقات الماكرة.

هل كانت مفيدة؟

المحلول

هل يمكنني التحكم في رؤوس HTTP المرسلة بواسطة Window.Open (متصفح متقاطع)؟

رقم

إذا لم يكن الأمر كذلك ، فهل يمكنني بطريقة ما ، فتح صفحة تصدر طلبي برؤوس مخصصة داخل نافذةها المطلقة؟

  • يمكنك طلب عنوان URL الذي يؤدي إلى برنامج جانب الخادم الذي يقدم الطلب برؤوس تعسفية ثم إرجاع الاستجابة
  • يمكنك تشغيل JavaScript (ربما تقول وداعًا للتحسين التدريجي) الذي يستخدم XHR لتقديم الطلب برؤوس تعسفية (على افتراض أن عنوان URL يناسب نفس سياسة الأصل) ثم معالجة النتيجة في JS.

أحتاج إلى بعض الاختراقات الماكرة ...

قد يساعد ذلك إذا وصفت المشكلة بدلاً من السؤال عما إذا كانت الحلول الممكنة ستعمل.

نصائح أخرى

إذا كنت تتحكم في جانب الخادم ، فقد يكون من الممكن تعيين قيمة الرأس في سلسلة الاستعلام وإرسالها هكذا؟ وبهذه الطريقة يمكنك تحليلها من سلسلة الاستعلام إذا لم يتم العثور عليها في الرؤوس.

مجرد فكرة ... وطلبت اختراق ماكر :)

كأفضل أنسر قد شبك استخدامه XMLHttpResponse إلا window.open, ، وأجعل الملخصات-anwser كمثال.

ملف JS الرئيسي هو download.js تنزيل 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
    }

لا يمكنك إضافة رؤوس مخصصة مباشرة مع Window.Open () في النافذة المنبثقة ولكن لدينا حللين محتملين


  1. اكتب طريقة Ajax للاتصال بعنوان URL معين برؤوس في ملف HTML منفصل واستخدم هذا HTML كعنوان URL في<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')

يمكن لسياسة CORS هنا حظر الطلب إذا لم يتم تمكين CORS في عنوان URL المطلوب.


  1. يمكنك طلب عنوان 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");
        }

`

استدعاء servlet في window.open('/requestURL')

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top