在HTTPS上阻止Ajax通话 - Chrome扩展程序

时间:2017-04-12 23:10:37

标签: jquery ajax google-chrome https

我正在撰写一个扩展程序,该扩展程序应在特定游戏收到更新时通知用户。数据从MySQL数据库接收。

我做了一个ajax调用来接收我的localhost服务器上的PHP脚本提供的json数据(用于测试目的)。

嗯,它在HTTP网站上运行良好。但该脚本被HTTPS网站阻止。

消息是“此页面正在尝试从未经身份验证的来源加载脚本”,这会导致Google的此问题排查页面: Link

有什么建议吗?

The Manifest:

{
"manifest_version": 2,
"name": "Extension",
"version": "1.0",
"icons": {
    "128": "icon128.png",
    "48": "icon48.png",
    "16": "icon16.png"
},
"page_action": {
    "default_icon": "icon16.png",
    "default_popup": "popup.html"
},
"background":{
    "scripts" : ["eventPage.js"],
    "persistent": false
},
"content_scripts": [
    {
        "matches": ["<all_urls>"],
        "js": ["content.js", "jquery-3.2.0.min.js"],
        "css": ["content.css"],
        "run_at": "document_start",
        "match_about_blank": true   
    }
],
"permissions": [
    "notifications", "http://localhost/*", "tabs"
]}

eventPage.js

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {

chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
    chrome.tabs.sendMessage(tabs[0].id, {todo: "displayNews"});
});
});

content.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
if (request.todo == "displayNews"){
    $.ajax({
        url: 'http://localhost/database/connect.php',
        type:'POST',
        dataType: 'json',
        success: function(output_string){
                alert(output_string[1].url);
            },
                error: function (xhr, ajaxOptions, thrownError){
                alert(xhr.statusText);
                alert(thrownError);
                }
    });
 //Some other code is executed here
}});

1 个答案:

答案 0 :(得分:0)

根据Barmar的评论,我不得不将localhost配置为HTTPS - 这就是问题所在。

以下是如何使用XAMPP来解决这个问题的答案:How do I use https (SSL) in XAMPP while using virtual hosts

如果Apache服务器没有启动,则必须在httpd.conf文件中取消注释该行: LoadModule ssl_module modules / mod_ssl.so