Я могу только догадываться, почему они поддерживают только свойства: возможно, потому что это универсальное соглашение в платформе .NET никогда не выставлять изменчивые поля (, вероятно, для защиты бинарной совместимости ), и они каким-то образом ожидал, что все программисты будут следовать одному и тому же соглашению.
Кроме того, хотя поля и свойства доступны с одним и тем же синтаксисом, привязка данных использует отражение, и (так что я слышал) отражение должно использоваться по-разному для полей доступа чем для доступа к свойствам.
Если вторая компания рада за то, что вы получили доступ к их контенту в IFrame, тогда им нужно снять ограничение - они могут сделать это довольно легко в конфигурации IIS.
Вы ничего не можете сделать, чтобы обойти это, и все, что работает, должно быстро исправляться в исправлении безопасности. Вы не можете сообщить браузеру, что он просто отображает фрейм, если заголовок исходного содержимого не разрешен в фреймах. Это будет облегчать захват сеанса.
Если контент GET только вы не отправляете данные, тогда вы можете получить сервер страницы и прокси-контент без заголовка, но затем любой пост назад должен быть признан недействительным.
Да Fiddler - опция для меня
В функции OnBeforeResponse для CustomRules.js (меню Fiddler> Rules> Customize Rules) добавьте следующие строки
oSession .oResponse.headers.Remove ( "X-Frame-Options"); oSession.oResponse.headers.Add («Access-Control-Allow-Origin», «*»);
Вы можете обойти X-Frame-Options в & lt; iframe & gt;
с помощью YQL. Вот доказательство концепции, протестированной в Chrome & amp; Firefox: Hacker News в & lt; iframe & gt; .
Процесс выглядит следующим образом:
loadURL
), getData
), & lt; base link & gt; ,
и & lt; script & gt;
в iframe, используя YQL, & lt; iframe & gt;
(функция loadHTML
). Пример кода JS:
var iframe = document.getElementsByTagName ('iframe' ) [0]; var url = iframe.src; var getData = function (data) {if (data & amp; & amp; data.query & amp; & amp; data.query.results & amp; data.query.results.resources & amp; data.query.results.resources. content & amp; & amp; data.query.results.resources.status == 200) loadHTML (data.query.results.resources.content); else if (data & amp; & amp; data.error & amp; & amp; data.error.description) loadHTML (data.error.description); else loadHTML ('Ошибка: Не могу загрузить' + url); }; var loadURL = function (src) {url = src; var script = document.createElement ('script'); script.src = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20data.headers%20where%20url%3D%22' + encodeURIComponent (url) + '% 22 & амп; формат = & JSON амп; диагностика = истина & амп; ENV = магазин% 3A% 2F% 2Fdatatables.org% 2Falltableswithkeys & амп; обратный вызов = GetData '; document.body.appendChild (сценарий); }; var loadHTML = function (html) {iframe.src = 'about: blank'; iframe.contentWindow.document.open (); iframe.contentWindow.document.write (html.replace (/ & lt; head & gt; / i, '& lt; head & gt; & lt; base href = "' + url + '" & gt; & lt; scr' + 'ipt & gt; document.addEventListener («click», function (e) {if (e.target & amp; e.target.nodeName == "A") {e.preventDefault (); parent.loadURL (e.target.href);}} ); & lt; / scr '+' ipt & gt; ')); iframe.contentWindow.document.close (); } loadURL (iframe.src);
Отказано в отображении« https://news.ycombinator.com/ »в фрейме, потому что он установил« X-Frame-Options »в« DENY »
. & quot; Вслед за & quot; fiddle.jshell.net/:64 Uncaught SecurityError: нарушение доступа к песочнице: заблокирован кадр на странице http: //fiddle.jshell.net" от доступа к кадру при «нулевом» значении. Доступный кадр изолирован песочницей и отсутствует "разрешить-то же самое происхождение" .
флаг & Quot;
– brichins
14 June 2016 в 16:04
Что касается второго вопроса - вы можете использовать фильтры Fiddler , чтобы настроить ответ заголовок X-Frame-Options
вручную на что-то вроде ALLOW-FROM *
]. Но, конечно, этот трюк будет работать только для вас - другие пользователи все равно не смогут видеть содержимое iframe (если они не делают то же самое).
Заголовок X-Frame-Options - это функция безопасности, применяемая на уровне браузера.
Если вы контролируете свою пользовательскую базу (ИТ-отдел для приложения corp), вы можете попробовать что-то вроде greasemonkey скрипт (если вы можете) развернуть greasemonkey для всех и b) развернуть свой сценарий совместно) ...
В качестве альтернативы вы можете проксировать их результат. Создайте конечную точку на своем сервере и запустите ее, чтобы конечная точка открыла соединение с целевой конечной точкой и просто запустила трафик назад.