我遇到的问题是jQuery的ajax方法超过了https。
整个网站都通过https提供。大多数表单通过ajax提交到处理页面。 ajax函数的url基本上是:
$.ajax({
"/assets/php/ajax/processor.php",
...
});
我还有一个.htaccess文件,它将所有http请求重定向到https,如下所示:
# Redirect any http requests to https
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L]
如果删除.htaccess文件中的重定向,ajax工作正常,但似乎无法在那里使用它。我假设这是因为ajax函数优于http(.ajax()的jQuery描述:执行异步HTTP(Ajax)请求),因此.htaccess重定向正在捕获ajax请求。
我需要重定向,因为我不希望网站的用户使用http版本(每个页面上都有标题)但我需要ajax才能工作并通过https保护。
提前感谢您提供任何帮助
答案 0 :(得分:0)
将Access-Control-Allow-Origin添加到服务器的标题中:
Access-Control-Allow-Origin: https://yoursite.com
然后您的原始.htaccess文件应该按预期工作。
答案 1 :(得分:0)
将规则更改为跳过切换到AJAX URI的https:
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !/assets/php/ajax/processor\.php [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]