Как мне остановить sinatra от перезаписи имен моих заголовков?
Синатра покрывает верблюдами все имена заголовков, вызывая проблемы с "P3P". Код:
require 'rubygems'
require 'sinatra'
configure :production do
# Configure stuff here you'll want to
# only be run at Heroku at boot
# TIP: You can get you database information
# from ENV['DATABASE_URI'] (see /env route below)
end
# Quick test
get '/track' do
#response.headers['Cache-Control'] = 'public, max-age=300'
response.set_cookie("visited",1)
response['this-that'] = "CP=\"CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE\""
response['P3P'] = "CP=\"CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE\""
"SUCCESS"
end
дай мне
* About to connect() to localhost port 9393 (#0)
* Trying 127.0.0.1... connected
> GET /track HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: localhost:9393
> Accept: */*
>
< HTTP/1.1 200 OK
< X-Frame-Options: sameorigin
< X-Xss-Protection: 1; mode=block
< Content-Type: text/html;charset=utf-8
< This-That: CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"
< P3p: CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"
< Content-Length: 7
< Server: WEBrick/1.3.1 (Ruby/1.9.2/2012-04-20)
< Date: Sun, 28 Oct 2012 16:26:47 GMT
< Connection: Keep-Alive
< Set-Cookie: visited=1
<
* Connection #0 to host localhost left intact
* Closing connection #0
SUCCESS
как вы видете this-that
переписывается This-That
а также P3P
переписывается P3p
, Вот мой список драгоценных камней:
* Местные драгоценные камни *
addressable (2.3.2)
bundler (1.2.1)
excon (0.16.7)
heroku (2.32.14)
heroku-api (0.3.5)
launchy (2.1.2)
mime-types (1.19)
netrc (0.7.7)
rack (1.4.1)
rack-protection (1.2.0)
rake (0.9.2.2)
rest-client (1.6.7)
rubygems-bundler (1.1.0)
rubyzip (0.9.9)
rvm (1.11.3.5)
shotgun (0.9)
sinatra (1.3.3)
tilt (1.3.3)
Как мне остановить sinatra от переписывания имен файлов cookie. Могу ли я сделать обезьяну патч?
1 ответ
Имена заголовков HTTP должны быть без учета регистра, поэтому в теории это не должно быть проблемой - P3p
должен работать так же хорошо, как P3P
,
В вашем случае заголовки изменяются сервером Webrick, а не Sinatra. Переход на другой сервер, такой как Thin (который не изменяет заголовки), будет самым простым решением (есть и другие преимущества использования Thin по сравнению с Webrick).
Если вам действительно нужно продолжать использовать Webrick, вы можете посмотреть на исправления WEBrick::HTTPResponse
, Вы должны быть осторожны, поскольку Webrick сокращает имена заголовков для обработки дубликатов, поэтому вам, возможно, придется учитывать это.