Регистрация  |  Вход

как обойти блокировку смешанного контента(http в https)

Всем привет. Извиняюсь за тупой вопрос, но никак не получается решить его. Нужно из визуал форс страницы отправить get запрос чтобы узнать погоду в текущем городе.. Сервис погоды работает через http, поэтому браузер блокирует смешанный контент. В итоге можно отключить систему безопасности и заработает, но это не выход. Подскажите плиз как это можно обойти!!!

Всем привет. Извиняюсь за тупой вопрос, но никак не получается решить его. Нужно из визуал форс страницы отправить get запрос чтобы узнать погоду в текущем городе.. Сервис погоды работает через http, поэтому браузер блокирует смешанный контент. В итоге можно отключить систему безопасности и заработает, но это не выход. Подскажите плиз как это можно обойти!!!

Обойти такое предупреждение врядли получится - это проблема браузера а не VF страницы.

есть два теоретических решения:

1. попробовать ссылку в виде //... (без http спереди)
<img src="//www.domain.com/image.gif" alt="" />
не знаю сработает ли это если сервис не отдает контент по https.

2. можно вытягивать данные в контроллере с помощью callout, парсить и показывать на странице уже как свою собственную информацию.

Обойти такое предупреждение врядли получится - это проблема браузера а не VF страницы.

есть два теоретических решения:

1. попробовать ссылку в виде //...  (без http спереди)
<img src="//www.domain.com/image.gif" alt="" />
не знаю сработает ли это если сервис не отдает контент по https.

2. можно вытягивать данные в контроллере с помощью callout, парсить и показывать на странице уже как свою собственную информацию.

у меня похожая проблема только с post запросом.
нужно отправить файл и данные из формы на visualforce странице на сторонний сервер.
в случае https://myServer и //myServer вылазит ошибка связанная с ssl сертификатом

<form action="http://myServer" enctype="multipart/form-data" method="post">
<input id="id" name="id" type="hidden" value="...."/>
<input id="accessToken" name="accessToken" type="hidden" value="......."/>
<input id="instanceUrl" name="instanceUrl" type="hidden" value="....."/>
<input type="file" name="file"/>
<input type="submit" value="Upload"/>
</form>

как можно это всё передать без дополнительного шаманства в настройках броузера?

у меня похожая проблема только с post запросом.
нужно отправить файл и данные из формы на visualforce странице на сторонний сервер.
в случае [url]https://myServer[/url] и //myServer вылазит ошибка связанная с ssl сертификатом
[code]
<form action="http://myServer" enctype="multipart/form-data" method="post">
   <input id="id" name="id" type="hidden" value="...."/>
   <input id="accessToken" name="accessToken" type="hidden" value="......."/>
   <input id="instanceUrl" name="instanceUrl" type="hidden"  value="....."/>
   <input type="file" name="file"/>
   <input type="submit" value="Upload"/>
</form>
[/code]
как можно это всё передать без дополнительного шаманства в настройках броузера?

Данные можно отправить POST запросом со стороны Salesforce (серверной части) с помощью APEX HTTP Callouts.
Тогда проблем с сертификатами точно не будет. Просто данные из браузера будут передаваться в контроллер SF, там обрабатываться, валидироваться и уже потом пересылаться в сторонний сервис с помощью POST запроса.

Либо попробовать в браузере, но не с form напрямую, а с помощью AJAX запроса.

Данные можно отправить POST запросом со стороны Salesforce (серверной части) с помощью APEX HTTP Callouts.
Тогда проблем с сертификатами точно не будет. Просто данные из браузера будут передаваться в контроллер SF, там обрабатываться, валидироваться и уже потом пересылаться в сторонний сервис с помощью POST запроса.

Либо попробовать в браузере, но не с form напрямую, а с помощью AJAX запроса.

я так понимаю с apex контроллером не получится. я пробовал вложить файл с помощью
Blob body=setBodyAsBlob(file);
но там вроде как ограничение 3 MB, а мне нужно 100.
попробую еще, конечно, с помощью ajax.
И еще вопрос: как можно с помощью apex или javascript принять selfsigned сертификат? Буду благодарен за примеры

я так понимаю с  apex контроллером не получится. я пробовал вложить файл с помощью 
Blob body=setBodyAsBlob(file); 
но там вроде как ограничение 3 MB, а мне нужно 100.
попробую еще, конечно, с помощью ajax.
И еще вопрос: как можно с помощью apex или javascript  принять selfsigned сертификат? Буду благодарен за примеры

попробовал такой вариант:

$('#postForm').submit(function(event){
event.preventDefault();
var formData = new FormData($(this)[0]);

$.ajax({
url: 'https://myhost.com',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {

alert(returndata);
}
});

return false;
});

и столкнулся с:
XMLHttpRequest cannot load https://myhost.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://c.cs1.visual.force.com' is therefore not allowed access.

попробовал такой вариант:
[code]$('#postForm').submit(function(event){
                   event.preventDefault();
                   var formData = new FormData($(this)[0]);
                 
                  $.ajax({
                    url: 'https://myhost.com',
                    type: 'POST',
                    data: formData,
                    async: false,
                    cache: false,
                    contentType: false,
                    processData: false,
                    success: function (returndata) {
                      
                      alert(returndata);
                    }
                  });
             
              return false;
            });[/code]
и столкнулся с:   [code] XMLHttpRequest cannot load https://myhost.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://c.cs1.visual.force.com' is therefore not allowed access.[/code]

paskel
попробовал такой вариант:
$('#postForm').submit(function(event){
event.preventDefault();
var formData = new FormData($(this)[0]);

$.ajax({
url: 'https://myhost.com',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {

alert(returndata);
}
});

return false;
});

и столкнулся с:
XMLHttpRequest cannot load https://myhost.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://c.cs1.visual.force.com' is therefore not allowed access.


Потому что так делать нельзя, это политика браузера.

[quote="paskel"]попробовал такой вариант:
[code]$('#postForm').submit(function(event){
                   event.preventDefault();
                   var formData = new FormData($(this)[0]);
                 
                  $.ajax({
                    url: 'https://myhost.com',
                    type: 'POST',
                    data: formData,
                    async: false,
                    cache: false,
                    contentType: false,
                    processData: false,
                    success: function (returndata) {
                      
                      alert(returndata);
                    }
                  });
             
              return false;
            });[/code]
и столкнулся с:   [code] XMLHttpRequest cannot load https://myhost.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://c.cs1.visual.force.com' is therefore not allowed access.[/code][/quote]


Потому что так делать нельзя, это политика браузера.