【问题标题】:Sinatra response.header present but No 'Access Control Allow Origin' header error appearingSinatra response.header 存在,但没有出现“访问控制允许来源”标头错误
【发布时间】:2014-06-26 02:27:56
【问题描述】:

我正在尝试访问我正在运行的 Heroku 应用程序

young-dusk-4185.herokuapp.com

但是,当尝试访问此链接上的响应时,我收到 No 'Access-Control-Allow-Origin headers present` 错误。提到另一个问题,我已经添加了

response.headers['Access-Control-Allow-Origin'] = '*' 到我的 Ruby 文件如下:

require 'sinatra'
require './test.rb'

get '/'  do
    result = FooRunner.run!

     File.open('output.json','w') do |f|
        f.write result
     end

    response.headers['Access-Control-Allow-Origin'] = '*'
    content_type :json
    result
end

当我在小提琴上测试它时,http://jsfiddle.net/Newtt/wF3ca/1/,调用失败。在当前的小提琴方法是GET。我什至尝试过POST,但也失败了。小提琴代码取自这个问题:

How do I send a cross-domain POST request via JavaScript?

知道如何从应用程序获取 JSON 响应吗?任何代码示例将不胜感激。谢谢!

【问题讨论】:

    标签: jquery json heroku sinatra


    【解决方案1】:

    这不是 Sinatra 问题。您需要将数据作为 JavaScript 对象而不是字符串传递,即:

    data: {"some":"json"}
    

    而不是

    data: '{"some":"json"}'
    

    这里的工作示例:http://jsfiddle.net/6q5kP/2/

    【讨论】:

      【解决方案2】:

      只是为了澄清 p11y, Chrome 在很多情况下都会抱怨跨域错误;特别是如果您的回复格式不正确。启用正确的访问控制标头后尝试返回有效的 JSON。

      已编辑:检查以确保您的服务器没有抛出异常。启用 CORS 机制时不会处理异常页面。

      【讨论】:

        猜你喜欢
        • 2020-01-10
        • 2017-12-27
        • 1970-01-01
        • 2020-10-31
        • 2015-06-08
        • 1970-01-01
        • 2013-03-02
        相关资源
        最近更新 更多