Не путать с CORS !
Вы не можете получить доступ к с разным началом с использованием JavaScript, это было бы огромным недостатком безопасности, если бы вы могли это сделать. Для браузеров того же происхождения блокируют сценарии, пытающиеся получить доступ к кадру с другим происхождением.
Происхождение считается другим, если не поддерживается хотя бы одна из следующих частей адреса:
://:/path/to/page.html
Протокол, имя хоста и порт должны быть одинаковыми для вашего домена, если вы хотите получить доступ к кадру.
Вот что произойдет, пытаясь получить доступ к следующим URL-адресам из http://www.example.com/home/index.html
URL RESULT
http://www.example.com/home/other.html -> Success
http://www.example.com/dir/inner/another.php -> Success
http://www.example.com:80 -> Success (default port for HTTP)
http://www.example.com:2251 -> Failure: different port
http://data.example.com/dir/other.html -> Failure: different hostname
https://www.example.com/home/index.html.html -> Failure: different protocol
ftp://www.example.com:21 -> Failure: different protocol & port
https://google.com/search?q=james+bond -> Failure: different hostname & protocol
-origin блокирует скрипты от доступа к содержимому сайтов с другим происхождением, если у вас есть обе страницы, вы можете обойти эту проблему, используя window.postMessage
и ее относительное message
событие для отправки сообщений между двумя страницами, например:
var frame = document.getElementById('your-frame-id');
frame.contentWindow.postMessage(/*any variable or object here*/, '*');
(см. основную страницу): window.addEventListener('message', function(event) {
// IMPORTANT: Check the origin of the data!
if (~event.origin.indexOf('http://yoursite.com')) {
// The data has been sent from your site
// The data sent with postMessage is stored in event.data
console.log(event.data);
} else {
// The data hasn't been sent from your site!
// Be careful! Do not use it.
return;
}
});
Этот метод может применяться в обоих направлениях, создавая слушателя на главной странице и получая ответы от фрейма. Та же логика также может быть реализована во всплывающих окнах и в основном в любом новом окне, создаваемом главной страницей (например, с использованием window.open()
), без какой-либо разницы.
Уже есть некоторые хорошие ответы на эту тему (я просто нашел их googling), поэтому для браузеров, где это возможно, ll ссылку относительный ответ. Однако помните, что отключение политики одного и того же происхождения (или CORS) повлияет только на на ваш браузер . Кроме того, при запуске браузера с настройками безопасности с одинаковым исходным кодом отключены доступ к веб-сайту для ресурсов с перекрестными источниками, поэтому он очень опасен и должен выполняться только для целей разработки.
Pex позволяет Вашей записи , параметризовал модульные тесты. В этом смысле это полностью вписывается в поток TDD/поблочного тестирования: запишите тест, сделайте, чтобы Pex 'исследовал' его, найдите некоторые проваливающие тесты, зафиксируйте код и т.д.
большое преимущество состоит в том, что можно выразить тесты для классы из исходных данных, не только пара трудно кодированных значений. Это дает больше выразительности для записи тестов и также вызывает, чтобы думать об инварианте/ожидании, что Ваш код должен выполнить (т.е. более трудно записать утверждения).
Я думаю Pex, поскольку инструмент исследовательского тестирования действительно интригует. В том отношении я рассматриваю его как что-то, что я хотел бы передать к QA для использования.
Как инструмент TDD, требуется некоторую работу, поскольку TDD является действием дизайна. Однако мне действительно нравится направление, которое возглавляет Peli. Существует что-то, чтобы быть сказанным для автоматизированного дизайна, которому помогают. Например, просто потому что TDD является средством проектирования, нет никакой причины, у меня не может быть автоматизированного инструмента, указывают на потенциальные пограничные случаи, в то время как я разрабатываю, правильно? Качество сборки в от запуска.
Выезд это сообщение, в котором Peli использует Pex в рабочем процессе стиля TDD. http://blog.dotnetwiki.org/TDDingABinaryHeapWithPexPart1.aspx
Если Вы ищете литературу по записи Теорий (google David Saff) - которые являются более общим способом записать модульные тесты и используют Pex в качестве проводника теории, я нашел ступенчатое изменение в производительности на основе моего опыта до сих пор. Я имею, просто записал сообщение в блоге, детализирующее мои события Pex в TDD, здесь: http://taumuon-jabuka.blogspot.com/2009/01/theory-driven-development-using_11.html
и поскольку я сказал - я рассматриваю его как TDD на стероидах! Это никоим образом не заменяет TDD, но улучшает действие.
Я действительно накачан о Pex. Это обеспечит тесты для edege случаев, которые Вы никогда не будете выдумывать, особенно если Ваша команда будет малочисленной и человек, пишущий, что методы совпадают с человеком, пишущим тесты.
Это также предоставит договорные обязательства, которым повинуются Ваши методы.
Разработка, ориентированная на тестирование, заставляет вас структурировать код для обеспечения его тестируемости. В этом отношении Pex находит умные и неудобные пути в вашем коде, помогая не только простым метрикам покрытия.
Основная сильная сторона Pex с Moles - возможность отслеживания побочных эффектов при разработке Brownfield: запустите Pex один раз и сохраните результаты, затем внесите изменения в код и запустите Pex снова, чтобы посмотреть, что было нарушено.