我正在编写一个API包装器作为gem,我想使用RSpec测试API响应.
这个问题是所有的API请求都是使用GET生成的,并且在url中包含一个API密钥:
例如 game/metadata/{api_key}
这给测试带来了问题,因为我不想将API密钥保存在git存储库历史记录中.有什么方法可以进行这些规范测试,最好使用RSpec/VCR,而不是将API密钥存储在版本控制中?
我尝试过使用环境变量,但VCR仍然存储整个请求,而不仅仅是响应体.
我有一个运行apache httpd作为前端的tomcat 6 web应用程序.我正在使用mod_proxy和mod_proxy_ajp将请求转发给tomcat.我的服务器正在运行ubuntu.现在我正在尝试使用mod_rewrite删除领先的www,以便我的规范网站网址是http://domain.com而不是http://www.domain.com
我已经阅读了很多关于使用mod_rewrite的教程,但我无法进行任何重写.我已经尝试将重写规则放在.htaccess文件中(在修改我的/ etc/apache/sites-available/default文件以设置AllowOverride all之后).我已经尝试将重写规则放在apache2.conf,httpd.conf和rewrite.conf中.我已经尝试了所有这些,并打开了重写日志.日志文件被创建,但是apache没有写任何内容.我想也许mod_proxy在某种程度上阻止了重写规则的使用,所以我也尝试禁用它...而且我仍然没有重写,也没有任何重写.
在这一点上,我完全不知道下一步该尝试什么.我如何解决为什么apache没有使用我的重写规则?
作为参考,这是我的重写指令:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
</IfModule>
Run Code Online (Sandbox Code Playgroud)
编辑:下面的回复对我的特定情况有帮助,但可能对整个社区没有帮助,因为答案是关于如何解决apache指令的一般问题.例如,有没有办法启用日志记录,它会告诉我在请求进入时以哪种顺序应用哪些指令?
编辑2:我现在已经开始工作了.我的虚拟主机设置不正确,我也没有正确的重写正则表达式.这是我开始工作的最终重写指令:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com$1 [L,R=301]
</IfModule>
Run Code Online (Sandbox Code Playgroud) 在我的网络应用程序的一种形式上,我有一个隐藏的字段,我需要防止因安全原因而被篡改.我正在尝试提出一个解决方案,我可以检测隐藏字段的值是否已更改,并做出适当的反应(即使用通用的"出错了,请再试一次"错误消息).解决方案应该足够安全,暴力攻击是不可行的.我有一个基本的解决方案,我认为它会起作用,但我不是安全专家,我可能在这里完全遗漏了一些东西.
我的想法是渲染两个隐藏的输入:一个名为"important_value",包含我需要保护的值,一个名为"important_value_hash",包含与一个常量长随机字符串连接的重要值的SHA哈希(即相同的字符串将每次都使用).提交表单时,服务器将重新计算SHA哈希值,并与提交的important_value_hash值进行比较.如果它们不相同,则important_value已被篡改.
我还可以使用SHA的输入字符串(可能是用户的IP地址?)连接其他值,但我不知道这是否真的让我获益.
这会安全吗?任何人都可以了解它是如何被打破的,以及可以/应该做些什么来改进它?
谢谢!
我有一些需要与Google Maps Routing API交互的Cucumber功能.我正在尝试使用VCR来消除这些交互.
我在我的功能中添加了一个VCR标签,如下所示:
@google_routing_api @javascript
Scenario: Creating a bus
Given I am on the buses page
When I follow "Get Started Now"
Run Code Online (Sandbox Code Playgroud)
然后添加了我的VCR配置 features/support/vcr.rb
require 'vcr'
VCR.config do |c|
# INFO: This is relative to the Rails.root
c.cassette_library_dir = 'features/fixtures/vcr_cassettes'
c.stub_with :fakeweb
end
# INFO: https://github.com/myronmarston/vcr/wiki/Usage-with-Cucumber
VCR.cucumber_tags do |t|
t.tag '@google_routing_api'
end
Run Code Online (Sandbox Code Playgroud)
但是当我举起我的傻瓜时,我被告知......
Real HTTP connections are disabled. Unregistered request: GET http://127.0.0.1:54181/__identify__
Run Code Online (Sandbox Code Playgroud)