admin-ajax.php mixed content

时间:2019-03-06 作者:Ivan Kovalev

无法从https访问admin ajax。在我的js中,我写道

$.ajax({
    url: \'https://\'+window.location.host+\'/admin/admin-ajax.php\',
    type:\'post\',
    data:\'action=bid_now_live_me&_pid=\'+ mypid ,
    success: function (data) {  
所以我把每个url都改成了https,但还是不走运。在chrome网络中我得到enter image description here

控制台中有很多错误

enter image description here

试图通过修改我的htaccess、wp config和使用强制ssl插件来强制ssl。当然,我试图禁用所有插件。

2 个回复
SO网友:Krzysiek Dróżdż

在JS代码中不应该这样做:

url: \'https://\'+window.location.host+\'/admin/admin-ajax.php\',
您应该使用wp_localize_script 并在其中传递正确的URL。

假设您的AJAX调用位于文件中my-js-file.js. 在你的主题/插件中,你有这样的东西

wp_enqueue_script( \'<SOME_HANDLE>\', ... . \'my-js-file.js\' , ...);
应在其后面添加以下内容:

wp_localize_script( \'<SOME_HANDLE>\', \'MyScriptData\', array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ) ) );
在JS文件中应该是

$.ajax({
    url: MyScriptData.ajax_url,
    type:\'post\',

SO网友:Qaisar Feroz

对于默认Wordpress安装,

url: \'https://\'+window.location.host+\'/admin/admin-ajax.php\',
应该是

    url: \'https://\'+window.location.host+\'/wp-admin/admin-ajax.php\',
/admin/ 应该是/wp-admin/.<我希望这有帮助。