Существует два html-файла: index.html
и inner.html
.
** index.html **
<html>
<body>
<script src="./node_modules/jquery/dist/jquery.js"></script>
<iframe src="./inner.html" frameborder="1"></iframe>
</body>
</html>
На него ссылается jquery.
** inner.html **
<html>
<body>
<input type="button" id="button" value="Get Data by AJAX">
<script src="./inner.js"></script>
</body>
</html>
** inner.js **
const $ = window.top.$
$('#button', window.document).click(function () {
$.ajax({
url: '/data.json',
success: function (data) {
console.log(data)
},
context: this
})
})
На стороне сервера я напечатаю заголовок referer
.
URL-адрес для открытия index.html: http://localhost:3000
.
Я обнаружил, когда я делаю ajax-запросы в inner.html, используя $
из window.top
, referer
, напечатанный всервером является http://localhost:3000
, который является URL-адресом внешней страницы.
Я ожидал, что URL-адрес iframe будет http://localhost:3000/inner.html
, но не могу найти способ, если я настаиваю на использовании jquery изwindow.top
.
PS: Если я переместу код <script src="./node_modules/jquery/dist/jquery.js"></script>
с index.html
на inner.html
и использую window.$
для отправки ajax-запросов в inner.html, я ожидаю реферера:http://localhost:3000/inner.html
Это упрощенная демонстрация для моего проекта, в которой мы должны использовать jquery, предоставляемый платформой, который является window.top.$