Require.js(+ text plugin)拒绝加载任何外部文本!模板,即使它们位于我自己的主机服务器中?

时间:2015-08-05 12:54:11

标签: javascript backbone.js requirejs marionette

他们会不断阻止原籍问题。我知道,默认情况下,无法通过额外的配置从远程加载它们, 但这是荒谬的,毫无意义!我不想在main.html代码中附加它们,因为它们很多而且有些非常大。

首先想到的是,最初从另一个域中复制有一些事情要做,但是它会抛出相同的交叉原始错误,从你尝试的“text!templates / ...”开始不存在的事情,即使是那么远关于找不到文件的错误。

代码:

<script src="https://cdnjs.cloudflare.com/ajax/libs/require-jquery/0.25.0/require-jquery.js"></script> 

require.config({
   config: {
     text: {
        useXhr: function (url, protocol, hostname, port) {
           return true;
        }
     }
   };
   paths: {
     jquery:"http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js",
     underscore: "underscore",
     text: "libs/text",
     backbone: "http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min",
     marionette: "http://cdnjs.cloudflare.com/ajax/libs/backbone.marionette/2.2.1/backbone.marionette.min"
  )
});

require(["App","jquery", "underscore", "backbone", "marionette","text!templates/basket/basket.html"], function(App,$,_,Backbone,Marionette,template){

结果(在Firefox + Chrome中):

GET http://myhost.../templates/basket/basket.html 302 FOUND (message with RED colour)
GET http://error.myhost/? 200 OK (with black)
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://error.myhost.../?. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

尝试更改useXhr: function (url, protocol, hostname, port),但不知道正确的语法,是(url:"my URL", protocol:'my host protocol'.. port:XX)还是它们应该保留原样? 但是,如果它们在我的主机服务器中,那么改变的重点是什么?我错过了什么吗?任何人都可以给出任何提示吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

对于require.config插件,您的text看起来不错。

我很确定您的问题出在服务器端。您需要确保服务器正在将Access-Control-Allow-Origin属性发送到您的原始域。

在您require该文字之前,请尝试添加:

$.support.cors = true;

这可能“迫使”它起作用,虽然我不是100%肯定。如果您现在不想弄乱服务器,请尝试通过添加CORS支持来解决服务器上的问题。