带Google API客户端的Rails:标头字段值不能包含CR / LF

时间:2018-07-07 04:32:02

标签: ruby-on-rails google-calendar-api google-api-ruby-client

options

真的不确定此错误来自何处。

我正在使用ruby 2.5,Rails 5和google-api-client 0.8.2

有什么想法可以解决,或者我可以提供什么信息来使这个问题更有意义?

更新:当我尝试使用Google的API进行授权时,我的日志会显示此信息

UPDATE wp_options SET option_value = replace(option_value, 'http://example.com', 'https://example.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = REPLACE (guid, 'http://example.com', 'https://example.com');
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://example.com', 'https://example.com');
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://example.com','https://example.com');

根据我的研究,CRLF是“ \ r \ n”字符,对吗?

所以ArgumentError in Users::OmniauthCallbacksController#google_oauth2 header field value cannot include CR/LF 可能是问题所在。

所以我的问题是-在我的请求中如何使用Rails 5修复此问题时如何访问用户代理?

4 个答案:

答案 0 :(得分:1)

您可以修改user_agent字符串以删除CR / LF。我正在使用Rails 4.1.8和google-api-client版本`

  @api_client = Google::APIClient.new(:application_name=>"Chronos", :application_version=>0)
  # work around a bug that puts a CR/LF in the user agent string
  @api_client.user_agent = @api_client.user_agent.gsub("\n", "")

答案 1 :(得分:0)

更新google-api-client gem的版本对我有用。

答案 2 :(得分:0)

使用String name=x[0] 时,生成的User-Agent可能包含CRLF。可以在构造函数中覆盖它。示例:

Google::APIClient

答案 3 :(得分:0)

将gem google-api-client更新为版本0.20.0。它可以解决问题,但需要对应用程序进行其他更改