繁体   English   中英

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

[英]Require.js(+text plugin) refuse to load any external text!templates even they are located in my own host server?

他们将不断阻止跨源问题。 我知道,默认情况下无法使用额外的配置从远程加载它们,但这是荒谬的,毫无意义! 而且我不想将它们附加在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)还是应该他们照原样离开吗? 但是,如果它们在我的主机服务器中,更改的目的又是什么? 我误会了吗? 有人可以提供任何提示吗?

提前致谢!

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

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

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

$.support.cors = true;

尽管我不确定100%,但这可能会“迫使”它工作。 如果您现在不想与服务器打交道,请尝试这样做,但是可以通过添加CORS支持来解决服务器上的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM