javascript - 是否可以(在用户许可的情况下)以与在扩展程序中相同的方式在网页中使用 JavaScript 执行跨站点请求?

标签 javascript firefox google-chrome

Google 即将发布其 PC 和操作系统。您将只能使用浏览器技术(即 JavaScript)为该机器编写代码。所以我希望一些工具已经可用。

在 Web 上,JavaScript 具有防止 XSS 攻击的同源策略。在扩展中,它可以自由地四处游荡。

所以问题是:我是否可以编写一个页面或(如果您愿意)一个经过授权(当然是在用户确认后)的在线应用程序来执行它认为需要的所有跨站点请求?我知道当你写一个扩展时这是可能的,但我更喜欢一些不会在用户浏览器中停留太多的东西。 [编辑] 我知道如果您可以控制所涉及的两个站点,则有解决方案。但我想问是否可以访问,例如,google 或 yahoo API:我无法控制的网站。

例如,假设我想为某些 API(REST、JSON、XML:不是脚本标签、跨站点兼容 API)编写前端:我需要将其托管在某个地方(与 API 提供者不同的主机)但是我需要对该域进行不受限制的调用并阅读响应。我了解安全风险,我说的是首先征求用户的许可(就像安装扩展时所做的那样)。

最佳答案

如果您需要让浏览器和服务器同意访问数据,您可以查看 CORS: http://www.w3.org/TR/cors
https://developer.mozilla.org/en/HTTP_access_control

基本上,您在服务器上为所有请求添加一个 header ,告诉浏览器服务器知道跨源并且可以接受。

它非常简单。有一些陷阱。一个是浏览器和服务器在存在非标准 header 时参与的所谓预检对话框。一些框架会插入这样一个触发此对话框的 header 。这实际上意味着服务器需要将 cors header 添加到所有响应中,包括 OPTIONS header !

如果你稍后提到,你想向用户请求权限以绕过安全限制,你需要查看签名脚本:http://www.mozilla.org/projects/security/components/signed-scripts.html

关于javascript - 是否可以(在用户许可的情况下)以与在扩展程序中相同的方式在网页中使用 JavaScript 执行跨站点请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4488618/

相关文章:

javascript - 你能检测用户是否处于 Chrome 的访客模式吗?

javascript - JS : How to update list items positions based on a new order/"list"?

javascript - 这个内部函数的目的是什么?

javascript - 如何重用克隆的元素?

html - 将 CSS 类属性应用于 Firefox/IE 与 Chrome 中的链接元素

java - 使用 Java 控制谷歌浏览器

html - Chrome 基于名称属性覆盖占位符?

javascript - 转义 HTML 实体并动态呈现 URL

css - 在 Firefox 中获取特定于页面或域的时尚代码时遇到问题吗?

google-chrome - 从 paypal 沙箱返回后,localhost 拒绝连接