【问题标题】:Making requests from userscript to the localhost从用户脚本向本地主机发出请求
【发布时间】:2012-01-30 07:25:42
【问题描述】:

所以,我正在尝试从我自己的脚本向本地主机发出跨站点 AJAX 请求。在用户脚本中(在 Firefox 的 Scriptish 引擎上运行)我正在像这样加载我的脚本

myscript_include.setAttribute('src', 'http://localhost/myscript.js?' + Math.random());
head.appendChild(myscript_include);

确实有效。然后,在myscript.js 中,我尝试从本地主机读取数据(最后,我想向本地主机上的脚本发出 get-post 请求,以向网页添加任何需要的功能,而无需编写实际的 Firefox 扩展)。

按照我添加到myscript.js 的关于发出跨站点 AJAX 请求的说明:

$.getJSON('http://localhost/ajaxdata.json', function(json) { 
    alert(json.message); 
});

Firefox JS 控制台显示实际发出了 GET 请求,状态为 200 OK。它甚至显示 Content-Length 39,这确实是真的,但是 Response 字段保持为空并且不显示警报!

这种结构有什么问题(除了它本身很可怕)?有什么方法可以做我想做的事吗?

【问题讨论】:

  • 跳过所有的注射,使用GM_xmlhttpRequest()
  • 注入垃圾的想法不是使用 ajax - 我可以用同样的方式在用户脚本中编写它。在该命名空间中运行供个人使用的脚本非常舒服——通过这种方式避免了许多 GM 引擎问题。所以如果可能的话,我宁愿在不使用 GM-API 的情况下解决这个问题。

标签: ajax json cross-domain greasemonkey scriptish


【解决方案1】:

不确定,但也许将 Access-Control-Allow-Origin 标头添加到 localhost 可以解决这个问题?

参考:https://developer.mozilla.org/En/HTTP_access_control

【讨论】:

  • 好像不是。如果没有这样的响应状态至少为 200,但是在 .htaccess 中添加有关 Header add Access-Control-Allow-Origin "http://somedomain" 的内容时,它会在响应字段中返回状态 500 和 Apache 错误消息。
  • @user1094249 你安装了 mod_header 吗?什么是 apache 错误消息,只是内部服务器错误?您通常会收到 200 但没有内容这一事实强烈表明这是一个跨站点安全策略,拒绝您访问该请求。例如,在 stackoverflow 上,打开 firebug 并在控制台中发出 $.get('http://www.google.com');,您将看到相同的行为。
  • 谢谢,确实没有正确安装。
猜你喜欢
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2017-08-12
  • 2021-07-01
  • 2020-12-26
  • 2020-12-18
相关资源
最近更新 更多