如何解决AJAX访问控制允许起源在子域之间张贴



我正在尝试解决当用户通过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> &nbsp;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>

最新更新