AMP列表(自动提示)错误“无提示”

时间:2018-06-26 11:38:57

标签: ruby-on-rails amp-html amp-list

我正在使用 AMP-Autosuggest ,而发生此错误。我不知道该怎么解决。

API和网络位于不同的域。

错误:

No '**Access-Control-Allow-Origin**' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to '**no-cors**' to fetch the resource with **CORS** disabled.

代码:

<div class="suggest">
  <div
    class="autosuggest-container hidden"
    [class]="(showDropdown && query) ?
      'autosuggest-container' :
      'autosuggest-container hidden'"
  >
    <amp-list
      class="autosuggest-box"
      layout="fixed-height"
      height="120"
      src="https://myapi.com/data.json?q=xxx"
      id="autosuggest-list">
      <template type="amp-mustache">
        <amp-selector
          id="autosuggest-selector"
          keyboard-select-mode="focus"
          layout="container"
          on="
            select:
              AMP.setState({
                query: event.targetOption,
                showDropdown: false
              }),
              autosuggest-list.hide"
        >
          {{#results}}
            <div
              class="select-option no-outline"
              role="option"
              tabindex="0"
              on="tap:autosuggest-list.hide"
              option="{{.}}"
            >{{.}}</div>
          {{/results}}
          {{^results}}
            <div class="select-option {{#query}}empty{{/query}}">
              {{#query}}Sorry! We don't ship to your city {{/query}}
            </div>
          {{/results}}
        </amp-selector>
      </template>
    </amp-list>
  </div>
</div>


<amp-state id="autosuggest">
    <script type="application/json">
    {
      "endpoint": "https://myapi.com/data.json?q=xxx",
      "emptyAndInitialTemplateJson": [{
        []
      }]
    }
    </script>
  </amp-state>

1 个答案:

答案 0 :(得分:1)

我通过对我的API服务器进行少量更改来解决此问题。

在我的服务中,我使用机架式宝石

Config / application.rb

  config.middleware.insert_before 0, "Rack::Cors" do
      allow do
        origins '*'
        resource '*', headers: :any, methods: [:get, :post, :options]
      end
    end

允许CORS

response.headers['AMP-Redirect-To'] = request.protocol+request.host_with_port+url
response.headers['Access-Control-Expose-Headers'] = 'AMP-Redirect-To, AMP-Access-Control-Allow-Source-Origin'
response.headers['AMP-Access-Control-Allow-Source-Origin'] = params[:__amp_source_origin]