加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何用角度的pushstate URL抛出一个真正的404或301

发布时间:2020-12-17 08:06:03 所属栏目:安全 来源:网络整理
导读:我正在使用$ routeProvider和$ locationProvider在单一页面应用程序(SPA)中处理pushstate URLS,如下所示: angular.module('pets',[]) .config(function($routeProvider,$locationProvider) { $locationProvider.html5Mode(true); $routeProvider.when('/pe
我正在使用$ routeProvider和$ locationProvider在单一页面应用程序(SPA)中处理pushstate URLS,如下所示:
angular.module('pets',[])

  .config(function($routeProvider,$locationProvider) {
    $locationProvider.html5Mode(true);
    $routeProvider.when('/pet/:petId',{
      controller: 'petController'
    });
  })

  .controller('petController',function($scope,petService,$routeParams){
    petService.get('/api/pets/' + $routeParams.petId).success(function(data) {
      $scope.pet = data;
    });
  });

该URL用于从可能存在或可能不存在的服务器中拉取内容。

如果这是一个普通的多页网站,那么对于缺少内容的请求将触发服务器的404标头响应,并且移动内容的请求将触发301.这将提醒Google丢失或移动的内容。

比方说我点击这样的URL:

http://example.com/pet/123456

并说数据库中没有这样的宠物,我的SPA如何可以返回404的内容。

否则,是否有其他方法正确地提醒用户或搜索引擎所请求的URL不存在?有没有其他解决方案我没有考虑?

真正的问题是http://example.com/pet/123456是否返回任何东西?

如果您的起点为http://example.com/,并且有一个指向http://example.com/pet/123456的链接,那么Angular将会调用petController,该控件将进行AJAX调用http://example.com / API / PET / 123456。

检索器不会这样做,而是直接尝试调用http://example.com/pet/123456。

所以您的服务器必须能够处理该调用。如果没有id 123456的宠物,那么它应该返回404.问题解决了。如果有的话应该返回SPA。应用程序应该相应地处理这种情况。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读