请求执行跨源XMLHttpRequest的权限

时间:2013-03-05 06:16:31

标签: google-chrome google-chrome-extension

我正在开展一个需要制作跨域请求的项目,但似乎没有办法在纯网页中允许这样做。

Chrome扩展程序只需向他们要提出请求的域请求权限,如下例所示。

"permissions": [
  "http://www.google.com/",
  "https://www.google.com/"
]

http://developer.chrome.com/extensions/xhr.html

我发现https://developers.google.com/chrome/apps/docs/no_crx似乎更接近我想要的东西,但唯一允许的权限是“地理位置”,“通知”和“unlimitedStorage”。

可以在我想要请求的域上设置HTTP标头Access-Control-Allow-Origin,但它们不受我的控制,因此不实用。

类似于Content-Security-Policy:connect-src https://www.google.com;主要用于进一步限制访问而不是开放访问。

http://www.html5rocks.com/en/tutorials/security/content-security-policy/

我理解安全问题,但快速搜索会显示人们通过制作代理服务器来解决这个问题。允许等同的请求是否有意义,这意味着没有用户的会话/ cookie信息的请求(如隐身模式)?或者某种机制,页面可以通过与扩展相同的方式请求权限?似乎有点倒退,要求以浏览器特定的方式关闭这样的事情。

就像webspeech api(或getUserMedia)请求访问使用麦克风一样。

任何想法或者我错过了什么?

编辑:我在其他地方发布了这个并得到了:

如果您从受您控制的域发出请求,则可以使用其他选项(如JSONP)来访问其他域中的数据。或者,您可以加载iframe并使用postMessage()与内容进行交互 - 有许多工具也强制您尝试与之通信的域愿意共享该数据。

我:

JSONP看起来像是提供JSON的数据源的解决方案,但我不确定这将解决我的整体问题。我正在尝试创建一个工具,它将从各种来源获取数据,同时显示结果并解释信息以执行操作。一个查询可能是jsonp或其他官方方法应该允许的谷歌搜索,但这不适用于从其他网页抓取数据。所有发出的请求都不需要用户会话信息,因此代理可以工作,但会增加延迟和维护成本。

postMessage()接口会要求被请求的页面正确实现侦听器吗?

到目前为止,“最佳”解决方案似乎仍然是在特权环境中运行的伴随扩展,可以发出请求并将结果与​​页面进行通信。该工具可以在网页中执行各种其他操作,因此我宁愿将主要环境保留为可以运行扩展程序的网页。

0 个答案:

没有答案