我正在尝试解决用户通过http://domain.com
访问我的网站时发生的Access-Control-Allow-Origin问题,并将ajax请求发布到http://www.domain.com
。
我认为最简单的方法是重写从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);
}
});
});
答案 0 :(得分:3)
如果您有权访问子域,只需添加响应标头:
Access-Control-Allow-Origin: *
如果你使用PHP就是这样:
<?php header('Access-Control-Allow-Origin: *'); ?>
对于ASP.Net,您可以尝试:
Response.AppendHeader("Access-Control-Allow-Origin", "*");
无法访问您的服务器并添加此标头唯一的方法是更改您的浏览器设置,这不是一个真正的解决方案。对于Google Chrome,请使用以下参数打开它:
C:\Program Files\Google\Chrome\Application\chrome.exe --disable-web-security
在Firefox中你必须像这样更改about:config
:
about:config -> security.fileuri.strict_origin_policy -> false
答案 1 :(得分:0)
我认为最简单的方法是重写从
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>