天道酬勤,学无止境

i18n: NS_ERROR_DOM_BAD_URI: 访问受限 URI 被拒绝(i18n: NS_ERROR_DOM_BAD_URI: Access to restricted URI denied)

问题

在我的计算机上进行本地测试:

索引.hml

<!DOCTYPE html>
<html>
    <head>
        <!--script src="angular.js"></script-->
        <script src="i18next.js"></script>
        <script src="app.js"></script>
    </head>
    <body>
    </body>
</html>

应用程序.js

i18n.init();

错误@ i18next.js 中的第 672 行

xhr.send(payload);

NS_ERROR_DOM_BAD_URI:访问受限 URI 被拒绝

  • 我该如何解决这个错误?
  • 可选:这条线有什么作用?
回答1

您遇到了同源策略问题(请参阅 http://en.wikipedia.org/wiki/Same-origin_policy)。 这意味着您发送请求的 URI 和您发送请求的 URL 之间的端口、域或协议是不同的。

您可以通过向服务器端代码添加标头来克服此问题:
Access-Control-Request-Headers
Access-Control-Request-Method

请参阅:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

回答2

我已经解决了我的项目中的 NS_ERROR_DOM_BAD_URI 错误(使用 ReactJS - axios 处理 API),但我认为我的解释解决方案可以帮助您:

  1. 我是如何得到这个错误的:

FE代码:

headers:  {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json'
}

BE 代码(Spring Boot):

allowedHeaders("userLoginToken", "Content-Type")

因为我只允许在标头中使用“Content-Type”,但我的标头具有冗余配置“Access-Control-Allow-Origin”,而我的 BE 不允许这样做。

  1. 我是如何解决的:只删除请求标头中的“Access-Control-Allow-Origin”,错误消失了。

    标头:{'内容类型':'应用程序/json'}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • i18n: NS_ERROR_DOM_BAD_URI: Access to restricted URI denied
    Doing tests locally on my computer: index.hml <!DOCTYPE html> <html> <head> <!--script src="angular.js"></script--> <script src="i18next.js"></script> <script src="app.js"></script> </head> <body> </body> </html> app.js i18n.init(); Error @ line 672 in i18next.js xhr.send(payload); NS_ERROR_DOM_BAD_URI: Access to restricted URI denied How do I solve this error? Optional: What does this line do?
  • 访问受限的URI被拒绝”代码:“ 1012-跨域Ajax请求(Access to restricted URI denied“ code: ”1012 - Cross domain Ajax request)
    问题 我需要执行跨域Ajax请求-这是我的代码 $.ajax( { url: redirectURL, data: $('#login-container form').serialize() + querystring, type: 'post', cache: false, dataType: 'jsonp', jsonp: 'jsonp_callback', }); Error: [Exception... "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" location: "http://testsite/assets/scripts/jquery-1.3.2.js Line: 19"] Source File: http://testsite/assets/scripts/jquery-1.3.2.js Line: 19 我也结帐了以下链接- 访问受限的URI拒绝代码:1012 $.ajax( { url: redirectURL+'?callback=?', data: $('#login-container form').serialize() + querystring, type: 'post', cache: false
  • 通过AJAX加载文本文件会产生受限的URI错误(Loading a text file through AJAX gives restricted URI error)
    问题 我提到我阅读了建议的链接...并且无法理解建议。.“使用Greasemonkey修改页面并开始编写一些JavaScript来修改网页 我正在使用$.ajax加载文本文件。 在Firefox上运行代码时,出现以下错误: 错误:[“拒绝访问受限制的URI”代码:“ 1012” nsresult:“ 0x805303f4(NS_ERROR_DOM_BAD_URI)”位置:“ <未知>”] 这是我的代码: <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script> <script language="javascript" type="text/javascript"> $(document).ready(function () { $("button").click(function () { $.ajax({ url: "demo_test.txt", success: function (result) { $("#div1").html(result); }, error: function (abc) { alert(abc.statusText); }, cache:false })
  • AJAX和NS_ERROR_DOM_BAD_URI错误(AJAX and NS_ERROR_DOM_BAD_URI error)
    问题 我一直遇到以下问题,我认为这可能是由于我的方法可能被误导了,但是希望在您的帮助下我可以解决这个问题! 基本上,对于我的网站,我有一个搜索提供程序(已经付款了,所以我没有违反任何使用条款)。 提交搜索表单后,我将被定向到其显示结果的域。 尽管我可以自定义返回结果的外观,但是到目前为止,我可以接受这一点,并且永远不会使其完全适合我的网站的外观。 因此,我想,我将通过AJAXified GET而不是通过表单进行常规GET,然后将返回的响应注入到页面上的div中-使我能够保持外观,并且永远不会离开我们的域。 这在IE中工作正常,但在Firefox中,我收到“ text/html (NS_ERROR_DOM_BAD_URI) ”作为错误。 经过一些研究,我发现这是由于AJAX请求访问了我们域之外的网站。 因此,我是否可以采用更好的方法来达到相同的效果? 还是有办法让我得到firefox和我的AJAX请求玩得好吗? 真正奇怪的是,如果我在HttpFox中观察到了请求(一个纯净的FF附加项),它会报告上述错误,但查看返回的内容就如预期的那样-所以我为什么不能访问它! ! 我真的很想让它工作,因为它比重写我们所有的CSS和东西要简单得多,以使其结果页面看上去几乎像我们的网站一样简单。 在这方面的任何帮助将不胜感激。 回答1 据我所知,您必须使用JSONP进行跨域-AJAX中的安全例外。
  • Java Web i18n 国际化
    国际化(Internationalization)指的是同一个网站可以支持多种不同的语言,以方便不同国家,不同语种的用户访问 代码 目录 首先,写配置文件。命名格式为基础名字+地区语言.properties,如基础名字为i18n,语言国家为zh_CN,拼起来的文件名就叫i18n_zh_CN.properties。在文件中写key-value 键值对。#中文 username=用户名 password=密码 #英文 username=username password=password 国际化测试代码 @Test public void localeTest() { Locale locale = Locale.getDefault(); // 获取默认信息 System.out.println(locale); // zh_CN System.out.println(locale.getCountry()); // CN System.out.println(locale.getLanguage()); // zh System.out.println(Locale.CHINA); // zh_CN System.out.println(Locale.US); // en_US } @Test public void i18nTest() { // 地区 Locale locale
  • 如何用 xsl 和 xml 做 I18N(How to do I18N with xsl and xml)
    问题 我正在尝试使用 xml/xsl 以不同语言制作页面。 我只想拥有一个 xml 和一个 xsl。 在我的页面 Url 上,我有一个参数 pLanguage,我想我可以用它来查看是否选择了英语或荷兰语。 我试过这段代码,但我不知道我是如何把它放在一起的: 首先,我将所有必须翻译的单词设为变量,如下所示: <xsl:variable name="lang.pageTitle" select="'This is the title in English'"/> 要在模板中获取 pageTitle,我现在可以使用 <xsl:value-of select="$lang.pageTitle"/> 我想通过使用 if-else 语句来测试我选择的语言是 EN 还是 NL 来替换上面的第一行代码,如下所示: <xsl:choose> <xsl:when test="$choosenLanguage = ‘NL’"> <xsl:variable name="lang.pageTitle" select="Titel in het nederlands'"/> </xsl:when> <xsl:otherwise> <xsl:variable name="lang.pageTitle" select="'This is the title in English'"/> </xsl
  • 动态设置 RequireJS i18n 语言环境(Setting RequireJS i18n locale dynamically)
    问题 我正在使用 RequireJS i18n 插件将翻译加载到我的应用程序中。 我正在努力解决用户首选语言的运行时确定概念。 如果您使用navigator.language来确定用户的首选语言,则该插件运行良好,但在我的应用程序中,用户的语言保存在服务器上的数据库中。 所以我需要在运行时设置语言环境: require.config({ config: { i18n: { locale: userLocale } } }); 所以我需要的是一种在RequireJS 加载我的应用程序之前设置userLocale的聪明方法。 有谁知道实现这一目标的最佳方法是什么? 可能性包括: 1) 以非 AMD 方式在我的应用程序之外设置userLocale : //run Ajax call to determine user's localization preferencess var Localization = Localization || getUserLocalization(); //and then... require.config({ config: { i18n: { locale: Localization.userLocale } } }); require(['app']); 这让我有点难过,因为这意味着我的一些应用程序将在 RequireJS 之外,因此不整洁。
  • 从 rails 模型内部访问翻译文件 (i18n)(Access translation file (i18n) from inside rails model)
    问题 我的模型中有: def body_color_enum [ ['Aqua', '#009c9c'], ['Grey', '#6d6e71'], ['Yellow', '#ffe600'], ['White', 'white'] ] end 我希望这些值来自翻译文件“en.yml” en: group: hero: hex1: '#6d6e71' name1: 'Dark grey' hex2: '#ccc' name2: 'Light grey' hex3: '#0099ce' name3: 'Blue' hex4: '#ffffff' name4: 'White' 我试过这个: def body_color_enum [ [t('group.hero.name1'), '#009c9c'], ['Grey', '#6d6e71'], ['Yellow', '#ffe600'], ['White', 'white'] ] end 但我收到此错误: undefined method `t' for #<Group:0x007fabad847ac8> 所以我要问的是如何从模型访问我的本地文件,以便我可以在 body_color_enum 方法中设置我的值。 回答1 称呼: I18n.t 而不是简单的t 。 t是一个仅在视图中可用的辅助方法,将整个逻辑委托给I18n模块。 更新:
  • 具有多语言支持的 Durandal(淘汰赛)应用程序(Durandal (knockout) app with multilanguage support)
    问题 我正在为我正在开发的应用程序构建多语言支持。 在做了一些研究和阅读 SO(国际化最佳实践)之后,我试图以“框架友好”的方式将其整合。 我目前所做的如下: 创建的 .resource 模块格式如下: resources.en-US.js define(function () { return { helloWorlLabelText: "Hello world!" } }); 在 app.start 上,我使用 requirejs 获取资源模块并将所有数据分配给 app.resources。 在每个模块内部,特定资源被分配给可观察对象,并通过文本绑定到标签和其他与文本相关的事物。 像这样: define(function (require) { var app = require('durandal/app'), router = require('durandal/plugins/router') }; return{ helloWorldLabelText: ko.observable(app.resources.helloWorldLabelText), canDeactivate: function () { } } }); On the view: <label for="hello-world" data-bind="text
  • Java i18n:每个包使用一个 ResourceBundle 访问器,还是整个项目使用一个?(Java i18n: use one ResourceBundle accessor per package, or one for whole project?)
    问题 我对国际化一无所知。 我有一个包含多个包的项目。 我正在使用 Eclipse 的内置“外部化字符串”向导将我的类中的字符串常量提取到属性文件中,并将这些字符串替换为对静态访问器的调用。 所以代替 System.out.println("Hello, world!"); 我结束了 System.out.println(Messages.getString("MyKey")); 以及每个包中的Messages实用程序类(它提供了一个静态getString方法,用于从 ResourceBundle [在本例中为.properties文件] 获取所需的字符串)。 难道最好有Messages类在每一个包,或有一个Messages类为整个项目? 回答1 我赞成全局本地化文件。 您将拥有需要重复或嵌套的重复键(“确定”、“取消”),如果资源得到整合,则与外部本地化人员的交互会更容易。 回答2 我会保留每包一个。 这样维护/重构/单元测试就容易多了。 此外,对单个文件没有全局依赖性。
  • 无法使用jQuery从外部文件加载xml(unable to load xml from external file using jQuery)
    问题 我正在尝试使用以下代码加载外部xml,但无法正常工作 $( document ).load( "data.xml", function( response, status, xhr ) { console.log( xhr.status + " " + xhr.statusText ); }); 我在同一文件夹中同时有data.xml和js文件。 在chrome中,它会返回404 error 。 在FF中,它重新调整为0 [Exception... "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" 。 我不明白为什么会这样? 请阐明此问题。 更新:我使用$.get()如下所述的拍摄,但仍然没有成功。 同时,我也尝试使用如下所示的纯js function loadXMLDoc(dname) { if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest(); } else { xhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",dname,false); xhttp.send(); return xhttp
  • 您如何在Rails中构造i18n yaml文件?(How do you structure i18n yaml files in Rails?)
    问题 我开始在Rails中填充一个en yaml文件,我已经知道它会在不久之后变得混乱并且失去控制。 是否有使该文件井井有条的惯例? 到目前为止,我有这样的结构: language: resource: pages: # index, show, new, edit page html elements: # h1, title activerecord: attributes: model: property: 现在,我想将以下内容放入此结构中,但不确定如何: 导航按钮文字(保存更改,创建帐户等) 来自控制器闪存的错误消息如何添加多字键。 我要使用空格还是下划线? 例如, t(".update button") )或t(".update_button") 区域设置文件结构是否有约定? 回答1 我发现最好的总体策略是某种程度地重现文件结构,以便进行任何翻译,我都可以立即找到从何处调用它。 这为我提供了进行翻译的环境。 大多数应用程序翻译都在视图中找到,所以我最大的顶级名称空间通常是views 。 我为控制器名称和操作名称或部分使用的ex创建子命名空间: views.users.index.title views.articles._sidebar.header 这两个示例都应该清楚表明我们正在翻译我的应用程序的哪一部分以及要查找的文件。 您提到了导航和按钮,如果它们是通用的
  • 如何从 Rails I18n 中的 yml 文件中检索所有翻译(How to retrieve all translations from yml files in Rails I18n)
    问题 我猜 rails 将所有解析的翻译 yml 文件存储在一种数组/哈希中。 有没有办法访问这个? 例如,如果我有一个文件: en: test_string: "testing this" warning: "This is just an example 我可以做类似 I18n.translations_store[:en][:test_string] 的事情吗? 我可以使用 YAML::load 解析 yml 文件,但在我的情况下,我已将 yml 文件拆分为子文件夹中的组织,而且我很确定 rails 已经解析了它们。 回答1 您必须在后端调用私有方法。 这是您获得访问权限的方式: translations = I18n.backend.send(:translations) translations[:en][:test_string] # => "testing this" 回答2 根据 8xx8 的评论,一个更简单的版本: I18n.t(:foo) I18n.backend.send(:translations)[:en][:test_string] 是 I18n.t(".")[:test_string] 这减轻了必须预先加载翻译或指定语言环境的麻烦。 回答3 如果您正在使用I18n::Fallbacks不幸的是您不能使用I18n.t('.')因为它只返回内容当前语言环境
  • 从 rails 项目中提取 I18n 翻译键(Extract I18n translation keys from rails project)
    问题 是否有一些 gem 或工具可用于解析我的代码并将 I18n 密钥提取到 yml 文件? 所以如果我在代码中有: <%= t("homepage.header", default: "Cool website") %> 它会添加到 yml 文件中 homepage: header: "Cool website" GetText 可以做到,但对于我的项目,现在我们使用默认的 rails 设置。 当我需要新的翻译键时,我不得不手动更新 yml 文件,这让我很烦恼。 回答1 我还没有听说过这样的 Ruby on Rails 工具,但我很确定它存在。 另一方面,您可以自己创建一个 - 可以使用相对简单的正则表达式来完成,例如: \s+t\(\"(?<key>.*?)\"\s*,\s*default:\s*\"(?<value>.*?)\"\) 然后,您要做的就是访问命名组(上面示例中的键和值)并将其写入 YAML 文件。 根据您要用于捕获此正则表达式的编程语言,您可能希望在正则表达式前添加 (?s) 或 (?-s) 以允许将行结尾视为空格(即多行声明) . 回答2 对于从谷歌来到这里的任何人来说,现在所有这些东西都有一个宝石。 https://github.com/glebm/i18n-tasks 回答3 如果您使用default:无处不在,那么有一个可能适合您的解决方案: 前¾
  • Spring 4 i18n & l10n(无法更改 HTTP 接受标头)(Spring 4 i18n & l10n (Cannot change HTTP accept header))
    问题 我需要帮助来解决此错误消息。 我使用 spring 4,我想在我的项目中实现 i18n 和 l10n。 当我尝试更改语言时会出现此消息。 下面是我的代码。 请问有人可以帮我解决这个问题吗? http://imgur.com/NZ9RaC8 输出: ago 21, 2014 10:29:43 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/webapp] threw exception [Request processing failed; nested exception is java.lang.UnsupportedOperationException: Cannot change HTTP accept header - use a different locale resolution strategy] with root cause java.lang.UnsupportedOperationException: Cannot change HTTP accept header - use a different locale resolution
  • POST AJAX 请求被拒绝 - CORS?(POST AJAX request denied - CORS?)
    问题 我在 node.js 服务器上的端口 5000 上设置了 CORS,如下所示: var app = express(); app.use(cors()); //normal CORS app.options('*', cors()); //preflight app.post('/connect', function(req, res) { console.log("Connection request received !") }); var port = 5000; app.listen(port, function () { console.log('Listening on port '+port); }); 我现在正在尝试使用 JQuery 发送 AJAX POST 请求,就像这样,在从我的硬盘打开的静态网页中: var xhr = $.post({ url: 'http://localhost:5000/connect', complete: function() { console.log("done !") }, crossDomain: true }); xhr.fail(function(xhr, status, error){ alert(error) }) complete函数从未被调用,我得到的唯一警报是来自 XHR fail处理程序的警报
  • SpringBoot 系列教程(四十六):SpringBoot集成i18n国际化配置
    一、概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。 国际化(internationalization)又称为i18n(读法为i18n,据说是因为internationalization(国际化)这个单词从i到n之间有18个英文字母,i18n的名字由此而来) 二、什么是合格的国际化软件 软件实现国际化,需具备以下两个特征: 对于程序中固定使用的文本元素,例如菜单栏、导航条等使用的文本元素、或错误提示信息,状态信息等,需要根据来访者的地区和国家,选择不同语言的文本为之服务; 对于程序动态产生的数据,例如(日期,货币等),软件应能根据当前所在的国家或地区的文化习惯进行显示。 三、国际化的应用地方 对于软件中的菜单栏、导航条、错误提示信息、状态信息等这些固定不变的文本信息,可以把它们写在一个properties文件中,并根据不同的国家编写不同的properties文件。这一组properties文件称之为一个资源包。 四、创建资源包和资源文件规则 一个资源包中的每个资源文件都必须拥有共同的基名。除了基名,每个资源文件的名称中还必须有标识其本地信息的附加部分。例如,一个资源包的基名是“login”,则与中文、英文环境相对应的资源文件名则为“login_zh_CN.properties” 来源
  • 模板中的django blocktrans和i18n(django blocktrans and i18n in templates)
    问题 我在Django中有一个i18n问题: 这工作正常: {% trans cat.name %} cat.name将被翻译 但这不起作用: {% blocktrans with cat.name|slugify as cat_slug %}{{ cat_slug }}{% endblocktrans %} cat.name未翻译 如果我更改过滤器: {% blocktrans with cat.name|capfirst as cat_slug %}{{ cat_slug }}{% endblocktrans %} 我可以看到过滤器正在运行,但是没有翻译... 回答1 我只是刚刚开始Django国际化,但是我认为您误解了{% blocktrans %}标签如何处理占位符。 blocktrans是允许翻译占位符周围的文本。 它不会翻译{{...}}任何内容。 如果查看生成的.po文件,则会看到以下模板代码: {% blocktrans %}This is my variable: {{variable}}{% endblocktrans %} 将转换为以下内容: msgid:"This is my variable: %s" 我认为您无法在blocktrans标记内转换变量。 您可能可以使用{% blocktrans with _("string") as x %}{{x}}{%
  • CakePHP缓存i18n转换(CakePHP cache i18n translate)
    问题 当我忘记翻译某些东西时,在Project VIEW的某个地方,我更改了文件/app/Locale/por/LC_MESSAGES/default.po并将其发送回服务器。 简而言之,但大多数情况下,这种“新翻译”需要花费HOURS的时间:我只是发送文件,清理了缓存和浏览器CakePHP,按F5键,然后…没发生。 是什么原因? [编辑] <?php echo $this->Form->input('Item.0.description', array('label' => false, 'class' => 'span12', 'div' => array('class' => 'span7'), 'rows' => 3, 'placeholder' => __('Type the description'))); ?> 回答1 要强制更新语言,您可以清除/tmp/cache目录中的persistent和models目录。 如果启用了视图缓存,则还必须清除views 。 当将debug设置为2 (这是在开发过程中使用框架的值)并且persistent目录中填充了新的缓存文件时,缓存将被禁用,每次加载视图时,旧文件将被覆盖。 因此, debug开关和随后的浏览器刷新可能会为您清除旧的语言文件。 回答2 我找到了一个奇怪的解决方案: 我设置了(app / Config / core
  • PHP/PDO 和 SQL Server 连接和 i18n 问题(PHP/PDO and SQL Server connection and i18n issues)
    问题 在我们的网络应用程序中,我们使用 PHP5.2.6 + PDO 连接到 SQL Server 2005 数据库并存储俄语文本。 数据库排序规则是Cyrillic_General_CI_AS ,表排序规则是Cyrillic_General_CI_AS ,列类型是NVARCHAR(MAX) 。 我们尝试使用以下两种方案连接到数据库,都导致了不同的问题。 PDO mssql: $dbh = new PDO ('mssql:host='.$mssql_server.';dbname='.$mssql_db, $mssql_login, $mssql_pwd); 在这种情况下,像这样的简单查询的结果: SELECT field1 FROM tbl1 WHERE id=1 显示被截断为 255 字节的field1数据。 PDO odbc: $dbh = new PDO ('odbc:DSN=myDSN;UID='.$mssql_login.';PWD='.$mssql_pwd); 在这种情况下,同一查询的结果显示完整的未截断数据,但带有问号而不是俄语符号。 笔记: 在 SQL Management Studio 中,数据不会被截断,俄语符号也能正确显示。 我们有 Windows 2003 企业版 SP2 那么我们应该选择什么样的连接方式,以及如何解决相应的问题呢? 回答1