Перенаправление на страницу в angular6 - PullRequest
0 голосов
/ 14 января 2019

У меня есть такой сценарий: -

Мне нужно интегрировать платежный шлюз на веб-сайт. Мы используем угловой 6 на переднем конце и подпружиненный на задней части. Платежный шлюз просит публиковать данные в кодировке formurl, поэтому я публикую данные в кодировке formurl. Теперь это дает мне перекрестную ошибку контроля доступа. Итак, что я сделал сейчас, так это то, что я создал API, который принимает строки в кодировке Formurl и сообщения на их API. Теперь их код ответа 302, который перенаправления. Теперь я получаю URL и cookie от заголовков. но если я отправлю этот URL и Cokkie на веб-интерфейс, я не смогу открыть страницу с желаемым выводом, которая не может установить cookie на другом домене в угловом формате.

Сейчас я получаю HTML, но я не могу создать страницу динамически с этим HTML в угловом формате.

Пожалуйста, скажите мне решение этого в угловом или javascript, если есть.

Мой код выглядит следующим образом: -

-> service.ts

makePayment(data: MakePaymentModel) {
        let body = new URLSearchParams();
        let headers = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' });
        for (let i in data) {
            if (data[i] != undefined) {
                body.append(i, data[i]);
            }
        }
        return this.http.post(this.resourceUrl2, body.toString(), { responseType: 'text', observe: 'response', withCredentials: false });
    }

это разместить форму в формате urlencoded на API.

Resource.java

@PostMapping(value = "/make-payment")
    public ResponseEntity<String> makePayment(@RequestBody String request) throws IOException {
        byte[] postData = request.getBytes(StandardCharsets.UTF_8);
        int postDataLength = postData.length;
        URL url = new URL(this.payementGatewayUrl+this.challanUrl);
        HttpURLConnection conn= (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setInstanceFollowRedirects(false);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("charset", "utf-8");
        conn.setRequestProperty("Content-Length", Integer.toString(postDataLength ));
        conn.setUseCaches(false);
        try(DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
            wr.write(postData);
        }
        boolean redirect = false;

        int status = conn.getResponseCode();
        if (status != HttpURLConnection.HTTP_OK) {
            if (status == HttpURLConnection.HTTP_MOVED_TEMP
                || status == HttpURLConnection.HTTP_MOVED_PERM
                || status == HttpURLConnection.HTTP_SEE_OTHER)
                redirect = true;
        }


        if (redirect) {
            // get redirect url from "location" header field
            String newUrl = conn.getHeaderField("Location");
            // get the cookie if need, for login
            String cookies = conn.getHeaderField("Set-Cookie");
            // open the new connnection again
            conn = (HttpURLConnection) new URL(this.payementGatewayUrl+newUrl).openConnection();
            conn.setRequestProperty("Cookie", cookies);
            conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8");
            conn.addRequestProperty("Referer", "google.com");
        }

        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        StringBuffer html = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            html.append(inputLine);
        }
        in.close();
        System.out.println("URL Content... \n" + html.toString());
        return ResponseEntity.ok("OK");
    }

Размести данные на своих API и верни перенаправление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...