HY,
所以我遇到了这个问题:我正在尝试在我的localhost上开发一个HTML文件,而我安装的所有浏览器都阻止我发送跨域请求。
我要做的是将我用Python编写的脚本(使用Mechanize,pyquery和lxml)转换为Javascript,原因并不重要(我认为在Javascript中更容易模拟一些东西)
来自本地文件的跨域请求曾经工作过,并且仍在使用最新的Safari(稳定版),但是我无法在这台机器上安装Safari(它是一个Linux机器)。
修改
我发现了Firefox的升级权限,例如:
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
// among others
问题是,我也试图访问iFrame中加载的内容...正如我所说,我正在尝试模拟浏览器会话,就像我使用像Mechanize这样的库,但是来自Javascript。我的脚本仍可在Safari中使用。
那么如何强制Chrome / Firefox / Opera绕过本地存储文件的所有安全限制?
我对浏览器命令行选项感兴趣,我甚至会考虑浏览器的补丁(我是用户,而不是尝试将其分发给其他人)。
谢谢,
答案 0 :(得分:0)
我不确定您是否可以控制IFrame中的内容,但是因为您说的是本地文件,我想您会这样做。关于Ajaxian的This article应该涵盖您的用例。 由于您的目标是A级浏览器(e.i.而不是IE),您可以使用html5 window.postMessage而不是IFrame。
干杯,乔恩。
我没有Python Mechanize lib的工作知识。
答案 1 :(得分:0)
为什么不开始使用简单的http服务器来解决问题?
import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
HandlerClass = SimpleHTTPRequestHandler
ServerClass = BaseHTTPServer.HTTPServer
Protocol = "HTTP/1.0"
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000
server_address = ('127.0.0.1', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()
这个python代码将启动一个简单的http服务器,侦听端口8000或第一个参数,并处理该脚本中文件夹中的所有文件。
答案 2 :(得分:0)
当页面在localhost上时,我不确定这是否有效,但值得一试:http://www.asual.com/jquery/address/
该jQuery插件允许您从任何域发出跨域请求...也许它可以与localhost一起使用?虽然没有测试过。