Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
放宽Javascript小部件的同源规则(不推荐使用的google finance回填数据)_Javascript_Wordpress_Cors_Same Origin Policy - Fatal编程技术网

放宽Javascript小部件的同源规则(不推荐使用的google finance回填数据)

放宽Javascript小部件的同源规则(不推荐使用的google finance回填数据),javascript,wordpress,cors,same-origin-policy,Javascript,Wordpress,Cors,Same Origin Policy,背景: 我有一个支持javascript的小部件,它使用来自另一个来源的数据。我在本地IDE中使用外部(非原始)数据成功地测试了它: 当我把这个小部件上传到我的wordpress站点时,我得到了一个错误: SEC7120:在中找不到来源 访问控制允许源标题 这反过来又使我对数据的调用返回如下内容: SCRIPT5007:SCRIPT5007:无法获取未定义或 空引用 免责声明: 我知道google finance早就被弃用了,但我的理解是服务器一直在运行。这意味着数据仍然存在。谷歌明确表示,使

背景:

我有一个支持javascript的小部件,它使用来自另一个来源的数据。我在本地IDE中使用外部(非原始)数据成功地测试了它:

当我把这个小部件上传到我的wordpress站点时,我得到了一个错误:

SEC7120:在中找不到来源 访问控制允许源标题

这反过来又使我对数据的调用返回如下内容:

SCRIPT5007:SCRIPT5007:无法获取未定义或 空引用

免责声明:

我知道google finance早就被弃用了,但我的理解是服务器一直在运行。这意味着数据仍然存在。谷歌明确表示,使用这些数据进行消费违反了这些数据的使用条款。我正在构建的不是API,也不是任何与消费相关的东西。它仅仅是一个前端部件,严格地说是一种美学装饰。我只是想通过绘制一些财务数据使网站看起来更酷

尽管如此,我不确定谷歌是否不允许我获取数据,因为它无法识别我的网站。也许我误解了使用条款,但我想我没有,但谁知道呢。我希望这是一个小的协议类型的修复,我添加了几行,一切都是幸福的。或者,如果确实是另一种情况,我无法控制谷歌信任的域名,我也无法想象与谷歌联系并说“嘿,谷歌,别把我的网站冷落在外”会有什么效果

问题:如何放宽同一原产地规则?关于c#的堆栈溢出,也有人问过一些类似的问题,但我仍然想知道如何为我的wordpress javascript小部件做到这一点。只有javascript能做到这一点吗

我看到很多例子有:

header("Access-Control-Allow-Origin: http://mozilla.com");
我不知道那是什么语言。我猜是PHP还是c。我对那些语言一无所知。我只想设计我的小部件,而不必学习关于后端协议的十亿知识。不过,我准备付出一些努力

澄清

我以前就用这种方式制作过小部件(将iframe指向我的小部件的html,它位于我的cpanel服务器上,wordpress位于
wp content/uploads/2018/03
),一点问题都没有。这一次,我得到了我的帖子中提到的原点错误。唯一的区别是我现在使用的是来自谷歌服务器的一些外部数据。也许是谷歌不认识我的网站?这个小部件在我的IDE中完全离线工作。我不知道如何进行,也不知道word press是否有什么东西可以帮助像我这样的小部件设计师,或者这完全是另一回事

在以下浏览器中确认错误结果:

  • 边缘

    • 这个问题相当简单。浏览器强制执行,这会阻止站点访问从外部域获取的数据。是一种协议,服务器可以使用该协议指示浏览器允许外部域读取其数据

      打算在浏览器上下文中使用的公共API通常会使用CORS来实现这一点。无论出于何种原因,谷歌似乎没有使用CORS来允许公众访问这个API。特别是,他们的响应不包括适当的
      accesscontrolalloworigin
      头(CORS协议的一部分),以允许您站点的Javascript读取数据。对此你真的无能为力

      标准的解决方法是代理数据。也就是说,它不会让您的代码直接使用API,而是会命中服务器上的URL,然后服务器会从Google获取请求的数据并返回它。服务器将能够读取数据,因为同源策略(浏览器问题)将不适用。并且您的Javascript将能够读取结果,因为请求是向同一个域发出的


      如果有办法在浏览器中绕过同一原产地政策,我对此并不熟悉。

      问题相当简单。浏览器强制执行,这会阻止站点访问从外部域获取的数据。是一种协议,服务器可以使用该协议指示浏览器允许外部域读取其数据

      打算在浏览器上下文中使用的公共API通常会使用CORS来实现这一点。无论出于何种原因,谷歌似乎没有使用CORS来允许公众访问这个API。特别是,他们的响应不包括适当的
      accesscontrolalloworigin
      头(CORS协议的一部分),以允许您站点的Javascript读取数据。对此你真的无能为力

      标准的解决方法是代理数据。也就是说,它不会让您的代码直接使用API,而是会命中服务器上的URL,然后服务器会从Google获取请求的数据并返回它。服务器将能够读取数据,因为同源策略(浏览器问题)将不适用。并且您的Javascript将能够读取结果,因为请求是向同一个域发出的


      如果有办法在浏览器中绕过同一原产地政策,我对它们并不熟悉。

      这很有帮助!看完你的帖子后,我想我最好尝试代理这些数据。您能用一个示例方法包含一个参考或几行javascript吗?如果没有直接使用API的东西,我想不出将数据传递到脚本的方法。我想我不知道如何在我的服务器上有一个URL来获取数据。@ArashHowaida:实际上不可能给出任何示例代码,因为后端服务可以使用任何语言和任何web框架。幸运的是,你可以找到很多文章(和