Как сделать?? Помогите.

mariner

Писатель
Регистрация
16 Июл 2012
Сообщения
3
Реакции
0
Делаю проект в котором реализовано междоменное общение с помощью Javascript. Все работает хорошо. Проблема в том что, если я к другому домену обращаюсь через через Http, то выскакивает алерт безопасности "Mixed content". Если ставлю свой сертификат(выписанный мной) и обращаюсь через Https то выскакивает сообщение "IE заблокировал отображение содержимого ошибочным сертификатом". Необходимо сделать так чтоб этих сообщений не было. Вариант, чтоб отключить эти настройки в браузере не предлагать, он не подходит. Как сделать это программно???
 
Такое через javascript вряд ли можно реализовать. Если бы у меня была задача реализовать аякс или вебсокет соединения на разные домены или ip, я бы прописал все серверы, к которым нужно обращаться из js в конфиг nginx через proxy_pass (в таком духе), а в самом js обращаться только на один домен (чтобы не было кроссдоменных обращений), и туда же (в nginx) в конфиг прописал сертификат. Получается реализация без хаков.
 
Дело в том что у меня нет доступа к ngix, чтобы там писать что либо. И доступа по определению однозначно быть не может.

Что б Вы понимали, происходит подмена выдачи. А вот каким образом убрать этот "Mixed content" я ума не приложу.
 
Ну блин, с подменой выдачи нужно прокси человеческий поднимать. Так чтобы скрипты закачивались и выдавались а ссылки в них подменялись. Вот например мое решение для размещения сайта сотмаркета на собственном поддомене (решение nginx+node:(
Код:
var http = require('http');
http.createServer(function(request, response) {
    var localHost = request.headers['host'];
    request.headers['host'] = 'www.sotmarket.ru'
    if(request.headers['referer'])
        request.headers['referer'] = request.headers['referer']
            .replace(localHost,'www.sotmarket.ru')
    var proxy = http.createClient(80, request.headers['host'])
    var proxy_request = proxy.request(request.method, request.url, request.headers)
    proxy_request.on('response', function (proxy_response) {
        if(proxy_response.headers['set-cookie']) {
            var cc = proxy_response.headers['set-cookie']
            for(var i=0; i<cc.length; i++)
                cc[i] = cc[i].replace('.sotmarket.ru', '.'+localHost)
                    .replace(':32001', '')
            proxy_response.headers['set-cookie'] = cc
        }
//        console.log(proxy_response.headers['set-cookie'])
        proxy_response.pipe(response)
        response.writeHead(proxy_response.statusCode, proxy_response.headers)
    })
    request.pipe(proxy_request)
}).listen(32001)
Урезанный для ясности (но рабочий) пример на JavaScript. Транслирует сайт sotmarket.ru:80 на моем сервере на порту 32001. Далее создаю виртуальный хост в nginx и собственно делаю для него proxy_pass 127.0.0.1:32001. Все работает и не возникает никаких проблем. Куки передаются, get, post запросы проходят. Для сайта сотмаркета все прозрачно, они даже заподозрить ничего не смогут.

Далее можно подменять любой файл или менять что-либо в передаваемых данных.
 
Назад
Сверху