【问题标题】:Loading data using AJAX使用 AJAX 加载数据
【发布时间】:2012-03-21 20:46:48
【问题描述】:

我正在尝试在我的 Chrome 扩展程序中使用 AJAX 请求加载数据。据我了解,在使用 Chrome 扩展程序时,您可以发出 AJAX 请求,只要您设置了适当的权限,就不必担心同源策略。

但是在设置了正确的权限后(至少我认为我做到了)我仍然得到一个错误:

XMLHttpRequest 无法加载 https://stackoverflow.com/posts/popup/close/9498103。 Access-Control-Allow-Origin 不允许来源 chrome-extension://bcbifciedokdgkokbbfippkbecnkpclj。

我的权限(在我的 manifest.json 文件中设置)是this project 的一部分,您可能还需要查看其他代码:

  "permissions": [
    "http://stackoverflow.com",
    "https://stackoverflow.com",
    "http://*.stackoverflow.com",
    "https://*.stackoverflow.com"
  ]

我错过了什么还是根本不可能?

【问题讨论】:

    标签: javascript google-chrome-extension same-origin-policy


    【解决方案1】:
    1. 您应该确保您制作的是打包的应用程序/扩展程序,而不是托管的。跨源请求不适用于托管应用。

    2. 您需要在第一个 url 的末尾添加 *,它会起作用。 示例:

    "http://stackoverflow.com/*"
    

    【讨论】:

      【解决方案2】:

      仅提及主机是不够的,您必须在每个域后添加/*

        "permissions": [
          "https://stackoverflow.com/*",
          "https://stackoverflow.com/*",
          "http://*.stackoverflow.com/*",
          "https://*.stackoverflow.com/*"
        ]
      

      可以在这个答案中找到一个现成的跨域 XHR 演示:Cross-domain XMLHttpRequest using background pages

      【讨论】:

        猜你喜欢
        • 2017-09-17
        • 2013-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多