Chrome扩展上的Access-Control-Allow-Origin

Rai*_*nds 13 php xmlhttprequest google-chrome-extension

我正在制作一个Chrome扩展程序,用于从我自己的服务器中提取数据.它一次使用大约4个httpRequests,但有时我会得到如下控制台错误:

XMLHttpRequest cannot load http://apps.radionsm.lv/apps/system/index.php?request=now. Origin chrome-extension://egkddfmbidfobhchndockbhjancbpfkd is not allowed by Access-Control-Allow-Origin. 对于每个人有时没有.

如果我发送header('Access-Control-Allow-Origin: *');将修复它吗?

Eam*_*onn 32

您正在尝试进行跨源资源共享(CORS).坏消息是没有服务器作为中间人,就无法在普通网页上执行此操作.好消息是,在Chrome扩展程序中,您可以请求访问您想要的任何URL的权限.只需在manifest.json文件中输入类似的内容即可.

允许连接到您的网站:

 "permissions": [
    "http://*.radionsm.lv/"
  ],
Run Code Online (Sandbox Code Playgroud)

允许连接到任何站点:

 "permissions": [
    "http://*/"
  ],
Run Code Online (Sandbox Code Playgroud)

当用户安装您的扩展程序时,chrome将在完成安装之前通知他们对话框中所需的权限.

  • 值得一提 - 我必须删除并重新安装扩展,以便从清单文件更新权限. (14认同)
  • 我在这里赞成了Geva Tal的评论,并希望进一步强调你真的必须卸载你的扩展,然后重新安装它.只是从Chrome中重新加载扩展程序是不够的. (2认同)

mon*_*sur 21

在制作跨域XHR请求时,Chrome扩展程序有两种"模式":

1)如果域位于manifest.json文件的"permissions"部分中 - 请求没有"Origin"头,并且它总是成功.

2)如果域不在"权限"中 - 请求包含一个"Origin"头,其值为"chrome-extension:// ..."这表示请求是CORS请求,并且响应必须具有有效的Access-Control-Allow-Origin标头才能成功.


Ala*_*air 8

https://developer.chrome.com/extensions/xhr

仔细阅读该文档并检查您的权限是否已正确设置.