2012-10-28 11 views
5

सिनात्रा सभी शीर्षलेख नामों को ऊंट कर रहा है, जिससे 'पी 3 पी' के साथ समस्याएं आ रही हैं। कोड:मैं अपने हेडर नामों को दोबारा लिखने से सिनात्रा को कैसे रोकूं?

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-thatThis-That फिर से लिखा जाता है और P3PP3p फिर से लिखा जाता है। यहाँ मेरी मणि सूची है:

* स्थानीय रत्न *

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) 

मैं कैसे करूँ फिर से लिखकर कुकी नाम से सिनात्रा बंद करो। क्या कोई बंदर पैच मैं कर सकता हूं?

उत्तर

5

HTTP header names should be case insensitive, इसलिए सिद्धांत में यह कोई समस्या नहीं होनी चाहिए - P3p को P3P के साथ-साथ काम करना चाहिए।

आपके मामले में हेडर altered by the Webrick server हैं, सिनात्रा नहीं। थिन (जो हेडर को परिवर्तित नहीं करता है) जैसे किसी अन्य सर्वर में बदलना सबसे आसान फिक्स होगा (वेब्रिक पर थिन का उपयोग करने के साथ अन्य लाभ भी हैं)।

यदि आपको वास्तव में वेब्रिक का उपयोग करना जारी रखना है, तो आप WEBrick::HTTPResponse पैचिंग में देख सकते हैं। आपको सावधान रहना होगा, क्योंकि वेब्रिक ने डुप्लिकेट को संभालने के लिए हेडर नामों को घटा दिया है, इसलिए आपको इसके लिए खाता लेना पड़ सकता है।

संबंधित मुद्दे

 संबंधित मुद्दे