[rack-cors gem更改接受标头从json到html
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[rack-cors gem更改接受标头从json到html相关的知识,希望对你有一定的参考价值。
我有一个Rails 3应用程序。在API开发过程中,由于unexpected OPTIONS
requests而使OPTIONS
遇到了一些麻烦。因此,我决定使用CORS宝石。
config/initializers/cors.rb
我使用以下jQuery代码发送AJAX请求:
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '/api/*', headers: :any,
methods: [:get, :post, :put, :options]
end
end
[在使用$.ajax({
contentType: "application/json; charset=utf-8",
type: 'POST', dataType: 'json', url: url, data: JSON.stringify(data)
}).done(success).fail(fail);
之前(在rack-cors
场景中,它运作良好)。但是在安装localhost <-> localhost
之后,我抓住了rack-cors
,并在日志中找到了该行:
500 error
[似乎Rails忽略了Started POST "/api/my_resource/" for 127.0.0.1 at 2015-12-04 20:34:00+0300
Processing by Api::MyResourceController#create as html
内容类型要求。我该怎么做才能解决此问题?
请求标题:
json
响应标题:
POST /api/my_resource/ HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: ru,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Content-Type: application/json; charset=utf-8
Content-Length: 870
Origin: null
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
尝试移至HTTP/1.1 500 Internal Server Error
Content-Type: text/html; charset=utf-8
Content-Length: 963
X-Request-Id: e4150020dffb0fcc34cf04e134584b06
X-Runtime: 0.380448
access-control-allow-origin: null
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Access-Control-Max-Age: 1728000
Access-Control-Allow-Credentials: true
Vary: Origin
X-Rack-CORS: hit
Server: WEBrick/1.3.1 (Ruby/2.1.4/2014-10-27)
Date: Fri, 04 Dec 2015 17:30:10 GMT
Connection: Keep-Alive
application.rb
以上是关于[rack-cors gem更改接受标头从json到html的主要内容,如果未能解决你的问题,请参考以下文章
406 Spring MVC Json,根据请求“接受”标头不可接受
REST API - 使用“接受:应用程序/json”HTTP 标头
当我想在zf2客户端代码中使用“application / json”时,接受请求标头是“text / html,application / xhtml ...(etc)”