Используйте `window.top. $` Для отправки ajax-запроса в iframe, но реферер не является URL-адресом iframe src - PullRequest
0 голосов
/ 20 сентября 2018

Существует два 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.$

...