繁体   English   中英

Access-Control-Allow-Origin不允许“Chrome扩展程序”的含义?

[英]Meaning of “Chrome-extension is not allowed by Access-Control-Allow-Origin”?

这是我第一次开发Google Chrome Extentions,我的目标是从我在本地计算机上托管的REST服务中检索URL,并在弹出窗口中显示...这是我使用的代码:

<style>
body {
    min-width:357px;
    overflow-x:hidden;
}
</style>

<script>
var req = new XMLHttpRequest();
req.open(
    "GET",
    "http://URLTORESTSERVICE/Items",
    true);
req.onload = showWorklistItems;
req.send(null);

function showWorklistItems() {
    var worklistitems = req.responseXML.getElementsByTagName("WorklistItem");
    for (var i = 0, wli; wli = worklistitems[i]; i++) {
    var link = document.createElement('a');
    link.setAttribute('href', constructWLIURL(wli));
    document.body.appendChild(link);
  }
}

function constructWLIURL(wli) {
    return "testing" + wli.getAttribute("SerialNumber");
}
</script>

但是执行时出现此错误:

XMLHttpRequest cannot load http://URLTORESTSERVICE/Items. Origin chrome-extension://caioejefhikijgcaondigdaaobomailk is not allowed by Access-Control-Allow-Origin.

你正在进行CORS或“跨域资源共享”。 http://enable-cors.org/是一个很好的资源。 它是由您的请求不是源自与数据服务相同的域引起的。

为了使您可以使用来自另一个域的ajax请求中的数据,您需要让数据提供者在其http响应中添加类似于以下内容的CORS标头。 (注意:JSONP虽然很危险,但可以解决这个问题。)

Access-Control-Allow-Origin: *

编辑:我看到你是数据提供者 - 输出标题,你将被设置。

Access-Control-Allow-Origin是服务器发送(或不发送)的标头。 某些浏览器(尤其是Chrome和Firefox)会在跨域请求中使用此标头。 这意味着除非在该标头中列出了原始域,否则浏览器将拒绝执行请求(或至少完全执行)。

您可以更改本地服务器以正确设置标头,或者您可能以某种方式更改chrome的设置以停止将您正在执行的操作视为跨域请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM