Chrome扩展程序:可以完成:请求本地休息服务

时间:2015-08-04 19:03:43

标签: javascript rest google-chrome ip

我需要解决我在Google Chrome中执行的重复性任务。

偶尔会遇到IP地址,我需要对它们进行地理定位。

在我的系统上,我已经有一个REST服务,如果我调用了某个URL:

http://localhost:8080/json/8.8.8.8

我收到了GEO数据的JSON响应。

我想创建一个Chrome扩展程序,可以在选择时触发地理休息调用,甚至将鼠标悬停在IPv4字符串上。

这样的扩展是否可行?是否会被跨域请求保护阻止?

2 个答案:

答案 0 :(得分:0)

您可以直接在Chrome的地址栏中运行以下scriptlet:

javascript:var xhr = new XMLHttpRequest;xhr.open('GET', 'http://localhost:8080/json/'+window.getSelection().toString(), true);xhr.onload = function (e) {alert(xhr.responseText)};xhr.send();

(请注意,从此处复制时,您需要在地址栏上添加" javascript:"因为Chrome在粘贴时会修剪它。)

将其添加为新页面书签(将其命名为" IP Geo Data")并将其放在书签栏上。或者,只需键入其名称,然后从ombibox自动完成中选择它。您需要拥有所需的IP数据。

您对跨域保护是正确的,但是由于您控制了localhost:8080 / json上的服务,只需在对该路径发出的请求中添加以下标头:

Access-Control-Allow-Credentials: true

Access-Control-Allow-Headers: Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since

答案 1 :(得分:0)

您可以将其作为chrome,内容脚本,消息传递和设置适当权限的扩展。

Content scripts将在选定(或所有)页面上运行,并可以对页面执行任何操作。它们只是从页面的JavaScript环境中沙箱化。您可以开发一个能够识别IP地址的悬停操作和send the information可以处理它的background page(在环境中,尤其是在内容脚本的上下文中不可用的扩展的权限)。

在后台页面中,您可以使用XMLHttpRequestFetch功能发出请求。处理完数据后,您可以通过消息传递将结果返回到页面,或者随意执行任何操作。

manifest file中,您可以设置要向其发送信息的特定网址,或<all_urls>以获得在任何地方发送请求的权限。

...
"permissions": [
  "http://*.google.com/"
],
...

然后您的请求将不受CORS和相同域名政策的约束。