我正在尝试解决当用户通过http://domain.com
访问我的网站并向http://www.domain.com
发布ajax请求时出现的访问控制允许来源问题。
我认为最简单的方法是将所有请求从http://domain.com
重写到http://www.domain.com
?如果是这样,我将如何实现这一点?
有没有其他方法可以允许这样的CORS请求?
下面的示例代码
$(document).on('submit', "#registerform, #confirmreset", function(event){
//disable default click operation
event.preventDefault();
var action_url = $(this).attr("action");
$('#lightbox').fadeIn(250);
$('#lightbox-content-table').html("<i class='fa fa-spinner fa-lg fa-spin'></i> processing...");
// console.log(action_url);
var postData = $(this).serializeArray();
// console.log(postData);
$.post(action_url,postData,function(data){
console.log(data);
var obj = $.parseJSON(data);
// if(obj.status == "error"){
$('#lightbox-content-table').html(obj.message)
// }
if(obj.status == "success" && obj.message == "Success!")
{
window.location.replace(obj.redirect).delay(0);
}
});
});
如果您可以访问您的子域,只需为添加一个响应标头
Access-Control-Allow-Origin: *
如果你使用PHP,它是这样的:
<?php header('Access-Control-Allow-Origin: *'); ?>
对于ASP.Net,您可以简单地尝试:
Response.AppendHeader("Access-Control-Allow-Origin", "*");
如果没有访问服务器并添加此标头,唯一的方法就是更改浏览器设置,这不是一个真正的解决方案。对于谷歌Chrome,打开它时使用这样的参数:
C:Program FilesGoogleChromeApplicationchrome.exe --disable-web-security
在firefox中,你必须像这样更改about:config
:
about:config -> security.fileuri.strict_origin_policy -> false
我认为最简单的方法是将所有请求从
http://domain.com
重写到http://www.domain.com
?如果是这样,我将如何实现这一点?
假设Apache:
<VirtualHost *:80>
ServerName www.example.com
Redirect 301 / http://example.com/
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
# Your regular server config
</VirtualHost>