我正在尝试向192.158.110.129:5000(Flask Webserver)发出AJAX请求,而整个网站由192.168.110.129:8080(Apache)提供服务。我在所有浏览器中都获得了Access denied错误。我该如何解决这个问题? 我需要了解发生了什么,以便我可以解决它。 Firefox中的document.domain =“192.168.110.129”。 我认为这是一些跨站点脚本注入安全措施,但任何人都可以澄清吗?
由于我正在使用API,因此我可以显示的代码不多。就是这样的。 我有一个带有textarea的HTML,它加载了CKEDITOR脚本。我通过APACHE访问它。现在进行拼写检查我修改了他们的插件并向flash网络服务器发送请求。
request = "192.158.110.129:5000?data=data"
var data=CKEDITOR.ajax.load(request);
这不能通过。
因此,通过Apache和Ajaxing将文件提供给Flash服务器以进行Python操作。 有人建议'代理'或JSONP将是很好的解决方案。我能读到的任何地方?
答案 0 :(得分:1)
正确,大多数浏览器都不允许使用XSS。你有两个选择。
如果您发布一些代码,我将不得不提供示例更正。
答案 1 :(得分:1)
XHR请求受Same-Origin Policy限制,由于安全原因,该Cross-Origin Resource Sharing仅允许同一来源内的请求。所以192.168.110.129只允许发送XHR请求到192.168.110.129而不是192.158.110.129。
更改document.domain
在这里没有用。除此之外,您只能使用foo.example.com
和bar.example.com
等example.com
之类的适当(超级)域,这仅适用于DOM访问,而不适用于XHR请求。
XHR的扩展是Access-Control-Allow-Origin response header field,允许在特定条件下进行跨源请求。一个条件是接收站点授权来自脚本站点的请求。这是通过{{3}}完成的。它可以包含允许的来源列表,也可以包含*
作为通配符。
因此,请尝试在192.158.110.129计算机上发送Access-Control-Allow-Origin: *
。