为什么同一域上的同源策略错误?

时间:2013-11-14 21:27:37

标签: ajax xmlhttprequest same-origin-policy

在发布新网站之前不久,我们找到了计算机,其中相同的原始策略限制对同一个,原产地或域的页面的访问。这是网站:http://blanc-encens.com/

更糟糕的是,如果它不能立即起作用,在重新加载后就可以了!!

你能否在理论上告诉我为什么会发生这种情况,<罢工>或者如果你是少数选择之一,那么它无法检查问题?编辑:我现在手动将标题设置为“*”!

Chrome控制台错误:

XMLHttpRequest cannot load http://blanc-encens.com/profile?ajax=1. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.blanc-encens.com' is therefore not allowed access. profile:1 0 core.js:271

在Chrome中,无法正常工作的计算机上的网络标签中没有Response Headers

我的代码:

var hyper = {
    init : function() {
        this.content($('.navigation a').not('.follow a'));
        this.pop();
    },

    content : function(obj) {
        obj.on('click', function(e){
            var thisUrl = $(this).attr('href');
                thisalt = $(this).attr('alt');
            hyper.load(thisUrl);
            e.preventDefault;
            window.history.pushState(null, thisalt, thisUrl);
            document.title = thisalt;
        });
    },

    pop : function() {
        window.onpopstate  = function() {
            hyper.load(location.pathname);
        };

    },

    load : function(page) {
        page = page == '/' ? '/start' : page;
        $.ajax({
            type: 'GET',
            url: page, 
            data: {ajax : 1},
            success: function(data) {
            $('.content').empty().append(data);
            }
        });
    }
};
hyper.init();

谢谢!

1 个答案:

答案 0 :(得分:0)

我现在回想起我认为在这种情况下的“竞争条件”。巴尔玛在他的第一条评论中击中了头部,感谢KevinB坚持了我这么久并为我排序一切。 ;)

.htaccess

中的行
RewriteCond %{HTTP_HOST} ^www\.blanc-encens\.com
RewriteRule (.*) http://blanc-encens.com/$1 [R=301,L]

Javascript中的旧行

var thisUrl = 
location.host == 'blanc-encens.com' 
? '/test' + $(this).attr('href') 
: $(this).attr('href');  
  • 现在有人在前面发布了www的链接,这个脚本显然没有准备好。
  • 所以竞争条件一定是.htaccess已经不能正常工作(有人听说过吗?),或者说速度不够快。
  • 当有人打开页面时,它当然总是开始,但是在第一次点击链接时会出现明显的混乱。
  • .htaccess没有首先或足够快,然后有人点击链接,Javascript决定没有blanc-encens.com;您可以在错误消息中看到,网址中没有/test
  • 然后.htaccess开始了。
  • Et瞧,你试图从www域切换到不带域www域。 Bumm,同源政策错误。 ;)