我正在构建一个站点,它目前受HTTP Basic Auth用户名和密码保护。
我想测试与Paypal IPN的集成。
在我的测试卖家的Paypal Sandbox帐户中,我在表单中指定了我的IPN通知网址:
http://USERNAME:PASSWORD@IP_ADDRESS/?QUERY_PARAMS
我已确认,当我在隐身Chrome窗口中加载此网址时,此网址可以正常使用。
当我进行测试购买时,Paypal似乎没有发送HTTP Basic Auth标头,并且IPN通知失败,因为它无法授权。我还使用Paypal开发人员工具中的IPN测试器对此进行了测试。
有没有办法告诉Paypal发送必要的auth标头,还是我必须在服务器端重新配置?
答案 0 :(得分:0)
根据PayPal文档,这是不可能的,但如果您询问真实场景,通常在/作为您的Web服务器前面有代理服务器来处理简单的HTTP身份验证,您可以设置排除规则您的PayPal IPN网址。例如,如果您使用Nginx,您的指示将如下所示:
server {
listen 80;
server_name example.com;
location /paypal/ipn {
try_files $uri @proxy_to_app;
}
location / {
auth_basic "Restricted";
auth_basic_user_file /example/.htpasswd;
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
if (!-f $request_filename) {
proxy_pass http://localhost;
break;
}
}
}