jQuery ajax over https

时间:2013-12-11 20:05:54

标签: jquery ajax .htaccess http https

我遇到的问题是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保护。

提前感谢您提供任何帮助

2 个答案:

答案 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]