我有一个简单的AJAX请求被重定向到HTTP。我已经尝试添加尾随'/'并将URL设为“https”,正如我在类似帖子中看到的那样,但它仍然被拒绝。
jQuery.ajax({ url: "https://"+ host +"/wp-content/plugins/calendarview/views/updateRollOut.php/",
data: {id: eventID, start: start},
type: 'GET',
success: function(output) {
document.getElementById(rollOutDetails).innerHTML = output;
}
});
在Google Chrome控制台中,错误显示为:
jquery.js:1 Mixed Content: The page at
'https://pedalracing.org/newcalendar/' was loaded
over HTTPS, but requested an insecure XMLHttpRequest endpoint
'http://pedalracing.org/wp-content/plugins/calendarview/views/updateRollOut.php?
id=300770&start=1525905000'.
This request has been blocked; the content must be served over HTTPS.
当我点击Chrome错误中提供的指向端点的链接时,会转到我的网址:
https://pedalracing.org/wp-content/plugins/calendarview/views/updateRollOut.php?id=300770&start=1525905000
我无法弄清楚请求被重定向的位置/原因。我查看了WordPress的301重定向,但没有任何内容会影响此页面。有什么想法吗?
答案 0 :(得分:0)
查看关于using Ajax in plugins的法典文章。你应该做的是本地化你的JavaScript并包含你想要去的资源的“真实”链接。
使用wp_localize_script
,您可以执行以下操作:
wp_localize_script( 'script-name', 'MY_AJAX_OBJECT',
array(
'content_dir' => home_url( 'wp-content/plugins/calendarview/views/updateRollOut.php' )
)
);
将上述内容放在您的主题(或更好的插件)文件(.php
)中,并将其挂钩到用于排队脚本文件的同一个钩子中。理想情况下使用wp_enqueue_scripts
操作挂钩。
然后您可以将Ajax请求重写为:
jQuery.ajax(
{
url: MY_AJAX_OBJECT.content_dir,
data: {id: eventID, start: start},
type: 'GET',
success: function(output) {
document.getElementById(rollOutDetails).innerHTML = output;
}
}
);