2014-11-03 47 views
8

使用下面提到的Code1的角度Js中的基本路由,並獲得「XMLHttpRequest無法加載只有協議方案支持交叉原點請求:http,數據,chrome擴展名,https,chrome擴展「資源」錯誤,並發現我們必須使用本地Web服務器來解析相同並下載的MAMP,並在htdocs文件夾中保留我的html [login.html]啓動服務器,並用[localhostURL/AngularJs/login.html']替換templateUrl在代碼2和錯誤獲取錯誤提到:[$ SCE:insecurl]給出確切的錯誤之下,引導我,任何解決方案來解決同谷歌瀏覽器...角Js路由谷歌瀏覽器問題

代碼1

的index.html

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Test</title> 
    </head> 
    <body ng-app="plunker"> 
    <div ng-view=""></div>  
    <script src="angular.min.js"></script> 
    <script src="angular-route.js"></script> 
    <script src="app.js"></script> 
    </body> 
</html> 

app.js

var app = angular.module('plunker', ['ngRoute']); 
    app.config(function ($routeProvider) { 
    $routeProvider.when('/login',{ 
     controller: '', 
     templateUrl: 'login.html' 
    }).otherwise({ 
     redirectTo: '/login' 
    }); 
}); 

的login.html

Hello from login! 

代碼2

所有其他的事情都是一樣,只有在app.js

var app = angular.module('plunker', ['ngRoute']); 
    app.config(function ($routeProvider) { 
    $routeProvider.when('/login',{ 
     controller: '', 
     templateUrl: 'http://localhost:8888/AngularJs/login.html' 
    }).otherwise({ 
     redirectTo: '/login' 
    }); 
}); 

錯誤代碼1變化: - XMLHttpRequest cannot load file://localhost/Users/karthicklove/Documents/Aptana%20Studio%203%20Workspace/Object_Javascript/Angular_Js/Routing/login.html. Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource.

錯誤代碼2: - [$ SCE: insecurl] http://errors.angularjs.org/1.2.26/ $ sce/insecurl?p0 = http%3A%2F%2Focalocal%3A8888%2FAngularJs%2Flogin.html at Error(native)

+0

在你的第二個代碼中,你不需要提供templateUrl的完整url,只需提供html文件名。 – 2014-11-03 10:18:38

回答

0

該問題可能是您正在通過不同的端口查看您的頁面(端口80是默認的http端口),但您正在訪問端口8888,因此它會將您視爲跨源請求並阻止它認爲它可能是XSS攻擊或類似。

,如果你已經在同一端口上,通過使這是一個應用程序,即當我做這個網站+角JS網頁服務器依賴和模板URL更改爲這裏提到的解決

templateUrl: '/AngularJs/login.html' 
+0

感謝您的回覆,嘗試將端口更改爲80並將templateUrl修改爲「templateUrl:」/AngularJs/login.html「」,並將其更改爲http://localhost/login.html,但同樣的問題... – 2014-11-04 14:05:11

+0

它必須是與您連接的端口相同,而不僅僅是端口80 – DrogoNevets 2014-11-04 14:39:19

0

問題運行在服務器上的問題得到解決,它在谷歌瀏覽器中正常工作...

+2

請對此原文發表評論。謝謝! :) – 2015-03-04 21:30:21

7

我得到了類似的錯誤。我爲此得到了一個解決方案,我們不能在AngularJS中使用路由,只需將它保存在文件系統中即可。 (即)file:/// C:/Users/path/to/file.html?r = 4383065'如果你使用這個URL運行,你會得到錯誤。路由提供者將使用http協議。所以你必須把你的代碼放到本地主機中,然後從瀏覽器localhost/foldername/index.html運行。 不要從文件夾中運行它直接

,改變這樣

 templateUrl: '/AngularJs/login.html' 

模板URL如果您有疑問張貼在這裏。

+0

你可以請我建議我如何創建本地主機 – 2015-02-07 07:06:53

+0

@Kartheeks只需將您的項目發佈到某臺服務器,如tomcat在您的機器上。以便您可以使用http:// localhost:portname域來訪問它。 – 2015-03-18 09:22:34

2

如果您直接從Chrome運行頁面(您只需雙擊一個html文件),並且您的javascript正在嘗試請求某些數據,您將會遇到此錯誤。

原因: $ routeProvider使用HTTP服務來請求數據,並且除非您使用像Tomcat這樣的任何服務器,否則不能發送此請求。

解決方案:

  1. 部署應用程序在你的機器,如Tomcat任何服務器,並通過服務器打開網頁。

  2. 如果你認爲你只是玩弄客戶端編碼,那麼在Firefox/Safari等其他瀏覽器中更好地打開文件。