javascript - 如何使用ajax从php返回javascript对象

标签 javascript php jquery ajax google-chrome-extension

我已经研究这个问题几个小时了,我读了很多文章,但仍然无法弄清楚。 这是交易。

我正在使用 Chrome 扩展程序,我想调用我的服务器来返回一个 js 对象。我不想将其注入(inject)页面,但我希望能够在我的内容脚本中使用它。

注意:我不能使用 eval() (我已经尝试过了)并且我不能使用 jsonp

我正在使用一个框架,因此我的 header 未在此处设置,但它们设置为返回应用程序类型 application/javascript utf-8;

我的 php 端看起来像这样:

$refererObj = 'var refererObj = {
        myFunc: function () {
           console.log("hello");
        }
    };';
echo $refererObj;

我的js看起来像这样

$.ajax({
            url: myUrl,
            crossDomain: true,
            data: postData,
            dataType: "json",
            type: "POST",
            }).done(function(data){
                eval(data);
                console.log(data);
                console.log(refererObj);
            });

第一个 console.log 给出 ["varrefererObj = {↵ getProducts: function () {↵…(products);↵ console.log("hello");↵ }↵};"]

第二个给出“Uncaught ReferenceError:refererObj未定义”

我得到了带有 javascript 对象的字符串形式的响应,一切都很好,直到我真正想将字符串“转换”为可用的代码。

任何帮助都会非常好。

谢谢

最佳答案

  1. 如果您relax the default Content Security Policy,您实际上可以使用eval()unsafe-eval。但最好避免使用大锤子。

  2. 您可以再次使用 JSONP,如果您可以通过 https 服务器提供服务并且 add it to script-src内容安全政策。这样的安全风险稍微小一些。

我怀疑是否还有其他解决方案:您从外部服务器加载的任何内容都将被视为受到污染,如果您找到了执行它的方法 - 恭喜您,您刚刚绕过了 Chrome 中的 CSP,应该去领取您的错误赏金。

请注意,如果是简单的 JSON 数据,则毫无意义,您只需使用 XHR 和 JSON.parse 加载它即可。但您的示例包含代码。

关于javascript - 如何使用ajax从php返回javascript对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23817884/

相关文章:

javascript - 在不影响字符串的情况下 trim 空格

javascript - 如何从变换属性中仅删除比例?

php - 注册时通过电子邮件发送密码

javascript - 将change() 和 contains() 与 HTML <select> (jQuery) 一起使用

javascript - 字段验证需要正则表达式帮助

javascript - Node js : Express js asynchronous db query execution-return results got undefiend

php - 单击链接(更多)显示更多表字段数据..??

php - 使类中的每个函数都可以访问全局变量

javascript - jquery ajax 成功数据到 facebook

javascript - 通过单击关闭图标从表中删除行