Ajax 如何解决No';访问控制允许原点';在聚合物项目中?

Ajax 如何解决No';访问控制允许原点';在聚合物项目中?,ajax,polymer,polymer-1.0,Ajax,Polymer,Polymer 1.0,现在我正在探索Polymer项目1.0,任务是获取JSON并重复打印输出 但无论我在下面尝试了什么,都会出现错误,即使我尝试了Github页面,也会在终端中给出相同的错误响应 错误 无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“” 没有进入主题和设计的材料设计。。。所有我想要的功能将首先工作。所以我写了下面的代码 index.html <iron-ajax auto url="https:

现在我正在探索
Polymer项目1.0
,任务是获取
JSON
并重复打印输出

但无论我在下面尝试了什么,都会出现错误,即使我尝试了
Github页面
,也会在终端中给出相同的错误响应

错误

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”

没有进入主题和设计的材料设计。。。所有我想要的功能将首先工作。所以我写了下面的代码

index.html

<iron-ajax
  auto
  url="https://ajax.googleapis.com/ajax/services/search/news?v=1.0&rsz=8&pz=1&cf=all&ned=in&hl=en&topic=tc"
  handle-as="json"
  last-response="{{ajaxResponse}}"></iron-ajax>

  <template is="dom-repeat" items="{{ajaxResponse.responseData.results}}">
        <paper-material elevation="1" class="paper-font-body2">
              <h1>{{item.title}}</h1>
              <iron-image src="[[item.image.url]]" style="width:800px; height:450px; background-color: lightgray;" sizing="cover"  preload fade></iron-image>
              <p>{{item.content}}</p>
        </paper-material>
  </template>

{{item.title}
{{item.content}

启用

为了调试,我安装了名为
允许控制允许源代码:
的google chrome应用程序,然后上面的代码开始工作


即使我尝试使用iron ajax,演示也会给出相同的结果。这里发生了什么。我是宇宙中唯一一个收到这个错误的人。

你需要使用
jsonp
——这里有更多关于它的信息

演示

代码

$.ajax({
    url: "https://ajax.googleapis.com/ajax/services/search/news?v=1.0&rsz=8&pz=1&cf=all&ned=in&hl=en&topic=tc",

    jsonp: "callback",

    // Tell jQuery we're expecting JSONP
    dataType: "jsonp",

    // Work with the response
    success: function( response ) {
      console.log(response); // server response

    }
});
结果

但是,我在Polymer iron ajax
handleAs
中没有看到用于
jsonp
的选项,但是请尝试可用的选项

我环顾四周,发现有
byutvjsonp

byutvjsonp元素()公开网络请求 功能。它是一种聚合物v1.0+元素,有助于制造 JSONP请求。它使用聚合物行为(Byutv.behaviors.Jsonp)。信息技术 以聚合物的铁元素()为图案。它有 已经使用单元测试进行了测试。它是BYUtv元素组的一部分 元素的组合


您可以使用解决此问题。它是允许发出JSONP请求的Polymer 1.0+元素。您正在使用的GoogleAPI支持JSONP。我已经测试了下面的代码,并得到了正确的响应

<byutv-jsonp
    auto
    url="https://ajax.googleapis.com/ajax/services/search/news"
    params='{"v":"1.0","rsz":"8","pz":"1","cf":"all","ned":"in","hl":"en","topic":"tc"}'
    last-response="{{lastResponse}}"
    last-error="{{lastError}}"
    debounce-duration="300"></byutv-jsonp>

<template is="dom-repeat" items="{{lastResponse.responseData.results}}">
    <paper-material elevation="1" class="paper-font-body2">
        <h1>[[item.title]]</h1>
        <iron-image src="[[item.image.url]]" style="width:800px; height:450px; background-color: lightgray;" sizing="cover" preload fade></iron-image>
        <p>[[item.content]]</p>
    </paper-material>
</template>

[[项目名称]]
[[item.content]]


使用当前版本(1.2.0)的
byutv jsonp
将查询参数添加到
params
属性,而不是
url
属性,这一点很重要。我尝试了
jsonp
,但它对我不起作用。然后,我在禁用web安全模式下运行Chrome浏览器,通过AJAX请求调用第三方URL的问题得到了解决

请注意,这是开发环境中的一个临时补丁,它只适用于Chrome

  • 在桌面或其他地方创建Google Chrome的快捷方式
  • 右键单击它>选择属性
  • 更改
    target
    如下:

  • “C:\ProgramFiles(x86)\Google\Chrome\Application\Chrome.exe”--禁用web安全性
    谢谢我尝试了byutv jsonp。。。现在的问题是
    Uncaught SyntaxError:Unexpected token:
    ,但调试进一步发现只有{}响应给出了此错误。。。我尝试了不同的url请求,如果使用[]的响应不会给出错误。。为什么?我无法更改googleapi以返回[]…@Raja Simon,如果您检查这里的演示-,并将此链接放到浏览器中-,您将看到响应以--[-]开头。Google新闻--以--{“responseData”:{“results”:[-我想知道它是否与--{“responseData”:{“results”有问题:-回调实际上由--[…]包围--我看到你在github上提出了一个票证问题,请等待答复。@Raja Simon还有一个问题----不确定它到底是做什么的,但请查看演示好..谢谢你花了这么多时间。我会查看它的
    iron jsonp库
    ,然后让你知道…我们会等待..谢谢你的解释..你能告诉我linux版本的情况吗..bcse很多吗很多开发人员不了解Windows。谢谢。我已经用OSX和Linux命令更新了我的答案。请检查。谢谢!我只是想知道。iron ajax是否也应该处理这个问题,因为现在它只适用于同一域下的json,但不适用于restful api f.e。当从子域“api.your project.com”获取时如何使用此元素进行POST请求?