English 中文(简体)
装入本地文件时出错“ 只支持 HTTP 的 Cross 源请求 。 ”
原标题:"Cross origin requests are only supported for HTTP." error when loading a local file

我试图将3D型号装入3J型号,储存在我电脑上,装入3J型号,并装有 JSON Loader ,3D型号与整个网站的目录相同。

我得到了 “ Cross From requests ” 只支持 HTTP。 错误, 但我不知道是什么原因或如何修正它 。

最佳回答

我的水晶球表示,您正在使用 file://C:/ 来装入模型,因为错误信息不是 http://

所以您可以在本地 PC 中安装网络服务器, 或者将模型上传到别处, 并使用 jsonp , 将 url 改为 http://example.com/path/to/model

来源定义在“https://www.rfc-editor.org/rfc/rfc6454' rel=“noreferrer'>RFC-6454

   ...they have the same
   scheme, host, and port.  (See Section 4 for full details.)

所以即使您的文件来源于同一个主机 (localhost ),但只要这个方案不同( http //file ),它们就被视为不同的来源。

问题回答

只需直截了当 - 是的, 错误是说您不能直接将浏览器指向 file:// pose/ path/ pose. html

这里有些选项可以快速旋转本地网络服务器, 让浏览器提供本地文件

Python

如果你安装了Python...

  1. 将目录切换到您文件 some.html 或文件所在的文件夹, 使用命令 cd/path/to/ your/ friter 或文件存在

  2. 使用以下命令之一启动 Python 网络服务器

    python - m 简单HTTP服务器 # python 2

    Python3 - m http.server #python 3

这将启动一个网络服务器, 以在 < a href=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

  1. You can use a custom port python3 -m http.server 9000 giving you link: http://localhost:9000 to point your browser at

任何安装Python的装置都采用这一方法。

VSCode

如果您正在使用 < a href=" "https://code. visualstudio.com/" rel=" noreferrer" >Vivifual Studio 代码 您可以安装 < a href="https://markedplace. visvisualstudio.com/items?itemName=ritwickdey.LiveServer" rel=“nreferrer" >Live Server 扩展, 提供本地网络服务器... 在安装此扩展点击 < code> Go Live 部件后, 您可以在 vscode 窗口底部安装 < a href=" https://markeetplace. visualstudio.com/item?

Node.js

或者,如果你需要更灵敏的装置 并且已经使用诺代日...

  1. 安装 http-server , 键入 npm 安装 - g http-server

  2. 切换到您的工作目录, 您的 some. html 生活所在

  3. 通过发行 http-server -c-1 启动您的 http 服务器

这将旋转一个 ode.js httpd, 它将您目录中的文件作为静态文件, 可从 < a href=> 调阅 http://localhost: 8080" rel = “ noreferrer' > http://localhost: 8080 调阅 。

Ruby

如果你的首选语言是Ruby... Ruby之神说这同样有效:

ruby -run -e httpd . -p 8080

PHP

当然,PHP也有其解决办法。

php -S localhost:8000

在铬中, 您可以使用此标记 :

--allow-file-access-from-files

更多信息:

今天就来谈这个了

我写了一些代码 看起来像这个:

app.controller( ctrlr , function($scope, $http){
    $http.get( localhost:3000 ).success(function(data) {
        $scope.stuff = data;
    });
});

但它本该是这样看的:

app.controller( ctrlr , function($scope, $http){
    $http.get( http://localhost:3000 ).success(function(data) {
        $scope.stuff = data;
    });
});

唯一的区别是代码第二片中缺少 < code> http:// 。

以防还有其他人有类似问题。

只需将 url 更改为 < code> http:// localhost , 而不是 < code > localhost 。 如果您从本地打开 html 文件, 您应该创建一个本地服务器为该 html 文件服务, 最简单的方法是使用 < a href=" https://chrome.google. com/webstore/ detail/we- server-for- chrome/web- server- for- chrome/ofhbkhbkhphhbkbkkklkhfolfeikjpchlocgigb?hl=en? rel=" noreferr"\code> > web 服务器为 Chrome 。 这将修正问题 。

我将列出解决这个问题的不同方法 < 坚固> 3 : < 坚固 > 3 :

  1. Using a very lightweight npm package: Install live-server using npm install -g live-server. Then, go to that directory open the terminal and type live-server and hit enter, page will be served at localhost:8080. BONUS: It also supports hot reloading by default.
  2. Using a lightweight Google Chrome app developed by Google: Install the app, then go to the apps tab in Chrome and open the app. In the app point it to the right folder. Your page will be served!
  3. Modifying Chrome shortcut in windows: Create a Chrome browser s shortcut. Right-click on the icon and open properties. In properties, edit target to "C:Program Files (x86)GoogleChromeApplicationchrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession" and save. Then using Chrome open the page using ctrl+o. NOTE: Do NOT use this shortcut for regular browsing.

" 强力 " 注: " 强力 " 使用 http:// http://localhost:8080 ,以防出现错误。

使用 http:// https:// 来创建 url

<强 > error : 当地主机:8080

<强力 > 解决 : http://localhost:8080

例如,在Android App中,允许JavaScript通过 file:///android_asset/ 访问资产,使用 setAllowFileAccessFileURLs( true) ,这是您在 WebView 上调用getSettings() 获得的资产。

fastest way for me was: for windows users run your file on Firefox problem solved, or if you want to use chrome easiest way for me was to install Python 3 then from command prompt run command python -m http.server then go to http://localhost:8000/ then navigate to your files

python -m http.server

使用 VS 代码 < / 强 > 的 < 坚固 > 宽松解决方案

我得到了这个错误已有一段时间。 大多数答案都有效。 但我找到了一个不同的解决方案。 如果您不想在这里处理 node.js 或任何其他解决方案, 您正在使用 HTML 文件( 从其它js 文件调用函数或获取 json apis ), 尝试使用 < a href=> https://markedplace. visualstudio.com/ items? itemName=ritwickdey. LiveServer" rel="noreferr" > Live Server

它允许您轻松打开一个实时服务器。 由于它创建了 localhost 服务器, 问题正在解决中。 您可以打开一个 HTML 文件, 右键点击编辑器, 点击 < code> Open with LiveServer 点击 < code > Open with LiveServer 来启动 < localhost > 。

它基本上使用http://localhost/index.html 而不是使用file://... 装载文件。

<强 > EDIT

不需要有 .html 文件。 您可以使用快捷键启动 Live 服务器 。

点击 (alt+L, alt+O) 打开服务器和 (alt+L, alt+C) 停止服务器。 [关于MAC, cmd+L, cmd+O cmd+L, cmd+C ]]

希望它会帮助某人:)

对于Windows上没有Python或Node.js的人来说,仍然存在着一种轻量级的解决方案:Mongoose 。

您所做的只是将可执行文件拖到服务器根部所在的位置,然后运行它。 图标将出现在任务栏中, 它会在默认浏览器中浏览到服务器 。

此外,“http://zwamp.sourceforge.net/'rel="nofollown noreferrer"\\\\-WAMP 是一个100%便携式WAMP,在一个文件夹中运行,非常棒。如果你需要一个快速的 PHP和 MySQL 服务器,这是一个选项。尽管自2013年以来它一直没有更新。现代的替代方案是https://nodejs.org/en/download/ .安装nodejs。

  • 从命令提示 npm 安装 -g http-server 中运行命令,安装 http-server 。

  • 切换到您的工作目录, index.html / / yoursome.html 所在的工作目录 。

  • 运行命令 http- server - c-1 启动您的 http 服务器

  • Open web browser to http://localhost:8080 or http://localhost:8080/yoursome.html - depending on your html filename.

    在浏览器上装入 HTML 文件时, 我得到了这个准确的错误。 浏览器使用了本地目录中的 json 文件 。 就我而言, 我通过创建一个简单的节点服务器解决了这个问题, 从而允许服务器静态内容 。 我把这个代码留在这个 < a href=> 上 https:// stackoverflow.com/ a/ 26845720/ 267835 > 其它答案 。

    它简单地说应用程序应该在一个网络服务器上运行。 我对铬也有同样的问题, 我开始做手脚,把应用程序移动到那里, 它起作用了。

    我建议您使用小型服务器在本地主机上运行此类应用程序( 如果您没有使用内部服务器) 。

    这里的设置和运行非常简单:

    https://www.npmjs.com/package/tiny-server
    

    没有服务器, 无法装入静态本地文件( eg: svg) 。 如果您在机器中安装了国家预防机制/ YARN, 您可以使用“ a href=” https:// www. npmjs. com/package/ http- server” rel= “ nofollow noreferrer” >http- server 设置简单的 http 服务器 。

    npm install http-server -g
    http-server [path] [options]
    

    或者在该工程文件夹中打开终端并键入“ hss ” 。 它会自动启动 HTTP 实时服务器 。

    当我下载一个页面用于离线视图时,我经历了这个经历。

    我只需要从所有 标签删除 crossprotom=" anonymous > 属性; lt; statist; 标签

    如果您坚持在本地运行 .html 文件,而不使用网络服务器为它服务,您可以通过在网上提供有问题的资源,首先防止这些跨源请求发生。

    I had this problem when trying to to serve .js files through file://. My solution was to update my build script to replace <script src="..."> tags with <script>...</script>. Here s a gulp approach for doing that:

    1. run npm install --save-dev to packages gulp, gulp-inline and del.

    2. After creating a gulpfile.js to the root directory, add the following code (just change the file paths for whatever suits you):

    let gulp = require( gulp );
    let inline = require( gulp-inline );
    let del = require( del );
    
    gulp.task( inline , function (done) {
        gulp.src( dist/index.html )
        .pipe(inline({
            base:  dist/ ,
            disabledTypes:  css, svg, img 
        }))
        .pipe(gulp.dest( dist/ ).on( finish , function(){
            done()
        }));
    });
    
    gulp.task( clean , function (done) {
        del([ dist/*.js ])
        done()
    });
    
    gulp.task( bundle-for-local , gulp.series( inline ,  clean ))
    
    1. Either run gulp bundle-for-local or update your build script to run it automatically.

    您可以看到我的案件的详细问题和解决办法,<这里

    MacOS 上为你们所有人设置一个简单的 LaunchAgender , 使这些光亮的能力能够以您自己的 Chrome 副本中实现...

    保存 plist , 名称为 whatever ( aunit.chrome.dev.mode.plist , 例如), 在内容相似的 中保存 , 保存内容类似...

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>launch.chrome.dev.mode</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Applications/Google Chrome.app/Contents/MacOS/Google Chrome</string>
            <string>-allow-file-access-from-files</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
    </dict>
    </plist>
    

    它在启动时应该 /em > 启动 。 但是您可以在终端命令下随时强制它这样做 。

    发射器装货 -w ~/Library/LaunnchAgents/launch.chrome.dev.mode.plist

    * " 强势的TADA! " /强势的? * *

    er. 我刚刚找到一些正式的词:“试图装载使用 dojo/ text 插件的未安装的远程AMD 模块将因跨源安全限制而失败。 (由于对 dojo/ text 的呼叫被建设系统删除,AMD 模块的构建版本不受影响。 )

    One way it worked loading local files is using them with in the project folder instead of outside your project folder. Create one folder under your project example files similar to the way we create for images and replace the section where using complete local path other than project path and use relative url of file under project folder . It worked for me

    Linux Python 用户:

    import webbrowser
    browser = webbrowser.get( google-chrome --allow-file-access-from-files %s )
    browser.open(url)
    

    在使用以下 href 标记的锁定标记时,我也能够重新创建此错误信息 :

    <a href="javascript:">Example a tag</a>

    在我的案例中, 使用标签来获取指针光标, 事件实际上被某个 JQuery 点击事件控制。 我删除了 href 并添加了一个适用类 :

    cursor:pointer;

    电线索洛娃实现了这一点。 我仍然不明白电线索洛娃是如何做到的。 它甚至没有经过,如果被窃听请求。

    后来我发现从本地装入任何文件的密钥是: 我的WebView.getSettings (). setAllow UniversalAccessAccessFileURLs( true);

    当您想要访问任何 http 资源时, 网络视图将使用选择方法进行检查, 您可以通过 WebViewClient 给予访问权限。 如果通过回复被截取请求, 而对于以下的 GET/ POST 方法, 您只需返回无效 。

    如果您正在寻找火源主机的解决方案, 您可以运行

    firebase service > -- 仅主机 命令 < a href=" "https://firebase.google.com/docs/cli#安裝- cli- windows" rel= "no follown noreferrer" > Firebase CLI

    这就是我来这里的目的, 所以我想我只好留在这儿 帮助像那些。

    如果您使用 VS 代码只是尝试装入一个现场服务器。 立即解决我的问题 。

    URL应该是:

     createUserURL = "http://www.localhost:3000/api/angular/users"
    

    取代:

     createUserURL = "localhost:3000/api/angular/users"
    




    相关问题
    selected text in iframe

    How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

    How to fire event handlers on the link using javascript

    I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

    How to Add script codes before the </body> tag ASP.NET

    Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

    Clipboard access using Javascript - sans Flash?

    Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

    javascript debugging question

    I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

    Parsing date like twitter

    I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.