Во-первых, вы можете упростить файл, удалив ненужное сетевое объявление и отображение порта. docker-compose
создает пользовательскую мостовую сеть по умолчанию для вас и связывает все сервисы с ней - нет необходимости делать это вручную. Также внутри сети все порты автоматически подвергаются сервисам.
Во-вторых, удалить container_name
. Вы путаете себя. Службы получают имена своих хостов, равные именам служб по умолчанию.
version: '3.5'
services:
web_php:
image: php:7.2.2-apache
volumes:
- ./php/:/var/www/html/
web_dotnet:
build: .
Теперь, после того как все ненужные вещи убраны, просто позвоните web_php:80
из web_dotnet
.
После этого, если вы хотите получить доступ к web_dotnet
** извне ** docker-compose
, добавьте директиву ports
, чтобы сделать ее видимой с хоста.
some.js сможет использовать XMLHttpRequest для регистрации данных на abc.com? Другими словами, abc.com слепо доверяют, потому что мы загрузили JavaScript оттуда?
Нет, потому что сценарий загружается на отдельном домене, он не будет иметь доступа...
При доверии источнику данных затем, возможно, JSONP был бы более оптимальным вариантом. JSONP включает динамично добавляющие новые элементы СЦЕНАРИЯ к странице с набором SRC к другому домену с набором обратного вызова в качестве параметра в строке запроса. Например:
function getJSON(URL,success){
var ud = 'json'+(Math.random()*100).toString().replace(/\./g,'');
window[ud]= function(o){
success&&success(o);
};
document.getElementsByTagName('body')[0].appendChild((function(){
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = URL.replace('callback=?','callback='+ud);
return s;
})());
}
getJSON('http://YOUR-DOMAIN.com/script.php?dataName=john&dataAge=99&callback=?',function(data){
var success = data.flag === 'successful';
if(success) {
alert('The POST to abc.com WORKED SUCCESSFULLY');
}
});
Так, необходимо будет разместить собственный сценарий, который мог использовать PHP/CURL для регистрации на домен abc.com и затем произведет ответ в формате JSONP:
Я не являюсь слишком великим с PHP, но возможно чем-то вроде этого:
<?php
/* Grab the variables */
$postURL = $_GET['posturl'];
$postData['name'] = $_GET['dataName'];
$postData['age'] = $_GET['dataAge'];
/* Here, POST to abc.com */
/* MORE INFO: http://uk3.php.net/curl & http://www.askapache.com/htaccess/sending-post-form-data-with-php-curl.html */
/* Fake data (just for this example:) */
$postResponse = 'blahblahblah';
$postSuccess = TRUE;
/* Once you've done that, you can output a JSONP response */
/* Remember JSON format == 'JavaScript Object Notation' - e.g. {'foo':{'bar':'foo'}} */
echo $_GET['callback'] . '({';
echo "'flag':' . $postSuccess . ',";
echo "'response':' . $postResponse . '})";
?>
Так, Ваш сервер, которым Вы управляете, будет действовать как носитель между клиентом и abc.com, Вы передадите ответ обратно клиенту в формате JSON, таким образом, он сможет пониматься и использоваться JavaScript...
Самая легкая опция для Вас состояла бы в том, чтобы проксировать вызов через сервер, загружающий JavaScript. Таким образом, some.js позвонил бы хостинг-серверу, и тот сервер передаст запрос на abc.com.
конечно, если это не опция, потому что Вы не управляете hoster, существуют некоторые опции, но это кажется испачканным в перекрестных трудностях с браузером: http://ajaxian.com/archives/how-to-make-xmlhttprequest-calls-to-another-server-in-your-domain
Вы можете использовать easyXSS . Это библиотека, которая позволяет передавать данные и вызывать методы через границу домена. Это довольно просто, и вы должны уметь им пользоваться. На сайте code.google.com
есть множество примеров.