AngularJS、PHP Restful Cors 问题

2024-01-03

我在尝试对我的其余 php 服务器进行 $http 调用时遇到问题。 我正在进行从客户端到后端的跨域调用。

在我的 Angular 应用程序中,$http 服务的配置方式如下:

.config(['$httpProvider', function($httpProvider) {
    $httpProvider.interceptors.push('httpResponseInterceptor');
    $httpProvider.interceptors.push('httpTimeStampMarker');
    $httpProvider.defaults.useXDomain = true;
    $httpProvider.defaults.headers.post['Access-Control-Allow-Origin'] = '*';
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
    delete $httpProvider.defaults.headers.common['Content-Type, X-Requested-With'];
}])

这就是实际 $http.post() 的配置方式:

    // Set the headers
    var headers = {
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept': '*'
    };

    return $http({
            method: "POST",
            url: base_url,
            data: $.param(args),
            headers: headers
        })
        .success(function(data, status) {

        })
        .error(function(data, status) {

        });

这是服务器的 .htaccess:

# Cors
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Allow-Methods"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

预检请求进展顺利:

**Request headers:**
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:access-control-allow-origin, accept, access-control-allow-methods, content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:***
Origin:***
Referer:***
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36

**Response headers**
Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Allow-Methods
Access-Control-Allow-Methods:PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Origin:*
Allow:OPTIONS,GET,HEAD,POST
Connection:Keep-Alive
Content-Length:0
Content-Type:httpd/unix-directory
Date:Fri, 26 Dec 2014 07:12:24 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.9 (Unix) PHP/5.6.2

然而实际的 post 请求失败了:

XMLHttpRequest cannot load http://***/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '***' is therefore not allowed access. The response had HTTP status code 404.

这些是请求和响应标头:

**Request headers**
    Accept:*
    Accept-Encoding:gzip, deflate
    Accept-Language:en-US,en;q=0.8
    Access-Control-Allow-Methods:POST, GET, OPTIONS, PUT
    Access-Control-Allow-Origin:*
    Connection:keep-alive
    Content-Length:130
    Content-Type:application/x-www-form-urlencoded
    Host:***
    Origin:http://***
    Referer:***
    User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36


**Response headers**
Connection:Keep-Alive
Content-Length:198
Content-Type:text/html; charset=iso-8859-1
Date:Fri, 26 Dec 2014 07:12:24 GMT
Keep-Alive:timeout=5, max=99
Server:Apache/2.4.9 (Unix) PHP/5.6.2

我显然在发布请求的响应中缺少一些标头。

然而,它失败的问题确实在预检请求中有效。我尝试在其余服务器的index.php 中添加一些标头,但是请求没有到达那里并且更早地被卡住(我猜测是在加载.htaccess 时)。

我在这里缺少什么?


几个小时后我终于发现了。

我的.htaccess:

# Cors
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Access-Control-Allow-Origin"
Header always set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

@Alexey Rodin 给出的提示几乎是正确的。不应将“add”更改为“set”,而应将其设置为“always set”。

This site http://blog.bulte.net/12-24-2013/angular-wordpress-cors.html帮助我:

关于 AngularJS,我可以确认 CORS 不需要其他设置即可工作。 因此 Angular 的 $http 不需要通过标头等进行更改,默认设置应该与上述 .htaccess 条目一起使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS、PHP Restful Cors 问题 的相关文章

  • 在 Yii2 中从数据库中多态查找模型

    我在数据库 mysql 中有一张表 但该表存储了几种略有不同类型的行 类型取决于此表的type柱子 我有一个表的抽象 ActiveRecord 类和几个后代子类 它们为不同类型的同一表的行实现略有不同的逻辑 现在我正在为所有类型的行实现更新
  • 如何让 CodeIgniter 接受“查询字符串”URL?

    根据 CI 的文档 CodeIgniter 使用基于分段的方法 例如 example com my group 如果我想找到一个特定的组 id 5 我可以访问 example com my group 5 并在控制器中定义 function
  • Composer 安装失败并出现总线错误:10

    我正在尝试安装作曲家 curl sS https getcomposer org installer php 此操作失败并显示错误消息 Bus error 10 我也尝试过 php r readfile https getcomposer
  • 使用 PHP 显示 Mysql 中的图像

    这就是我的数据库中的表的样子 我正在尝试显示我存储的图像 它是 mimetype longblob 当我运行代码时 它会给我一个带有 的小框 没有错误 只是那个框 有谁知道错误是什么以及如何修复它 Display Index Display
  • mysqldump创建空sql文件? [Windows 上的 php 和 mysql]

    我尝试转储数据库 我尝试了指定 mysqldump exe 的完整路径或仅使用 mysqldump 它仍然给我一个 0kb dumpfile sql 细节 编程语言 PHP 数据库 MySql 5 XX 操作系统 服务器 Windows S
  • html 抓取和 CSS 查询

    以下库的优点和缺点是什么 PHP 简单 HTML DOM 解析器 http simplehtmldom sourceforge net QP http querypath org phpQuery http code google com
  • angularjs 是否将 null 视为 $scope.null ?

    问题的示例 div hello div 这是在以下范围内评估的吗 scope bar null 或者是这样的 scope bar scope null 请注意 在最后一种情况下 scope null 将是未定义的 并且该示例似乎可以正常工作
  • K2_内容模块评级

    我一直在category item php 中重建标准K2 评级 以查看评级从显示为星星到显示为数字 我所做的是 我替换了这段代码 div div class itemRatingForm ul class itemRatingList l
  • 正确设置 Laravel 5 CSRF 令牌的标头

    好吧 已经搜索这个问题好几个小时了 只是找不到解决方案的开始 我正在使用 angularJS 前端和 laravel 后端 Restangular 是我的通讯服务 我的 POST 很好 因为我可以在数据中包含 token 并且它会起作用 但
  • jQuery 时间戳之前的时间?

    下面是一个非常好的 jQuery 插件 与他们在 SO 上使用的插件非常相似 对我来说问题是它用它来转换时间
  • Symfony2 Beta3 中不断收到“您请求了一个不存在的服务“test.client””

    我正在尝试设置单元测试 但每当我运行 phpunit c app 时 我都会收到此错误 Symfony Component DependencyInjection Exception ServiceNotFoundException 您请求
  • 如何在Redis中正确存储图片?

    决定将图像存储在Redis中 如何正确执行 现在我这样做 redis gt set image path here is the base64 image code 我不确定这是否正常 将图片存储在Redis中是完全可以的 Redis 键和
  • 跟踪 PHP 对象属性更改

    我正在尝试跟踪对 PHP 变量所做的所有更改 该变量可以是对象或数组 例如 它看起来像 object array a b 然后使用对象缓存将该对象持久保存到存储中 当php脚本再次运行时 因此 当脚本第二次运行时 或者另一个脚本运行并修改该
  • xampp openssl 调用 openssl_pkey_new() 时出错;

    所以我试图让 openssl 在我的 Windows 安装的 xampp 1 7 3 上工作 它是用 OpenSSL 0 9 8l 构建的 这只是我第二次在 amp 安装上安装 openssl 但第一次进展顺利 这是在同一台机器上的 wam
  • 在 Angular SPA 中设置 404 页面的最佳方法?

    我有一个在 Angular 上运行的应用程序 并且我已经有一个 http 拦截设置 我的问题是我的 api 返回了一些我想重定向到 404 页面的 404 错误 还有一些我不想重定向的错误 例如 当导航到新页面时 如果该页面的内容返回 40
  • 删除 cookie php

    我正在尝试创建一个带有登录系统的平台 并将用户名和密码存储在cookie中 以使用户即使关闭浏览器然后再次输入也能保持登录状态 我设法保存了cookie 但我不知道如何制作注销按钮 这是代码 function logout body app
  • 在 Java Jersey 2 JAX-RS 中初始化单例

    我是泽西岛 2 22 2 的新手 请耐心等待 我正在创建一个与 LDAP 服务器交互的 REST 服务 用于存储 删除和检索用户数据 该服务通过执行加密 解密充当安全中介 在使用 REST 服务之前必须进行相当多的初始化 并且我只想执行此初
  • 加载 angularjs 路由后运行 javascript 代码

    我需要在 angularjs 加载路线后显示警报 显示警报的代码位于 angularjs 异步加载的视图中 视图加载后 我希望它能够运行 但它没有 我知道我可以广播并告诉它稍后运行等 但我需要一个更通用的解决方案 假设您正在谈论基于以下内容
  • PDF:在现有 PDF 文件中插入一行文本

    我有一个 PDF 文件 我希望在所有页面 前两页除外 的页脚上添加一行纯文本 不是徽标或类似内容 有谁有一个如何做到这一点的例子 用任何语言 Update 原始 PDF 是用 Scribus 制作的 我可以完全控制它 因此 如果更容易进行查
  • 实现 PHP 单例:静态类属性还是静态方法变量?

    所以 我总是像这样实现一个单例 class Singleton private static instance null public static function getInstance if self instance null se

随机推荐

  • 在返回“send_file”的烧瓶函数中,代码似乎不会在后续请求上运行,但文件仍然会下载。为什么?

    我正在使用具有以下路线的 Flask 代码 app route download def download file path certificate docx print certificate printed print os getc
  • 从 php stdin 保存大文件

    请告诉我从 php stdin 保存大文件的最佳方法 iOS 开发人员向我发送大型视频内容到服务器 我必须将其存储到文件中 我读取带有视频数据的标准输入线程并将其写入文件 例如 这样 handle fopen php input rb wh
  • JPlayer Circle Player 第一次使用 vox 制作的 wav 文件时不显示圆圈

    我有一个应用程序 它使用 JPlayer Circle Player 播放短音频以进行转录 这些音频均源自 vox 文件 已由 SoX 转换为 wav 按下 播放 按钮时 将播放音频 但不显示绿色圆圈 剪辑播放后 再次按播放确实会显示绿色圆
  • 为什么这个 std::vector 会给出运行时错误?

    vector
  • .NET:关于 AssemblyVersion,什么定义了二进制兼容性?

    对强命名程序集的哪些更改需要更改 AssemblyVersionAttribute 显然 以可能要求客户端必须更改代码的方式更改公共 api 需要增加 AssemblyVersion 但是 如果对公共 API 进行更改而不需要在客户端中更改
  • C 中的类型双关和联合

    我目前正在开发一个项目来构建一个小型编译器 只是为了它 我决定采用构建一个极其简单的虚拟机作为目标的方法 这样我就不必担心学习 elf intel 汇编等的细节 我的问题是关于 C 中使用联合的类型双关 我决定在虚拟机内存中仅支持 32 位
  • MongoDB嵌套对象聚合计数

    我有一个高度嵌套的 mongoDB 对象集 我想计算与给定条件匹配的子文档的数量编辑 在每个文档中 例如 id chr 20 pos 14371 ref A alt G studies study id Study1 samples sam
  • RuntimeError:DataLoader 工作线程意外退出

    我是 PyTorch 和机器学习的新手 所以我尝试按照这里的教程进行操作 https medium com nutanbhogendrasharma pytorch 卷积神经网络 with mnist dataset 4e8a4265e11
  • 使用 Emscripten 将 R 函数编译为 JavaScript

    我正在尝试使用 Emscripten 将一些用 C 编写的 R 函数编译为 JavaScript 我的第一个任务是移植一个名为pf 源码可以找到here https github com wch r source blob trunk sr
  • PHP:递归地将目录中的所有文件重命名为小写

    我需要帮助 我想递归地将目录中的所有文件重命名为小写 我有一个代码要测试 但它仅在该文件夹内重命名 而不是递归地重命名 我怎样才能让它递归地执行呢 这是我使用的代码 您可以使用 SPL递归目录迭代器 http docs php net ma
  • 不同组的 dplyr 滞后

    我正在尝试使用 dplyr 来改变包含变量的同一组滞后的列以及其他组 之一 的滞后 编辑 抱歉 在第一版中 我在最后一秒按日期重新排列 有点搞乱了顺序 这就是我想要的结果 Here is a minimal code example lib
  • Django - 复制具有 2 个嵌套外键的模型实例

    我是 django 新手 我有一个调查应用程序 其中管理员创建有问题的调查 问题有选择 我已将 save as True 添加到我的调查管理员中 但是当我复制调查时 问题是存在于副本中 但不存在选择 class SurveyAdmin ad
  • Pandas 列数学运算 无错误无答案

    我正在尝试对文件执行一些简单的数学运算 下面的列file 1 csv本质上是动态的 列的数量会不时增加 所以我们无法修复last column master ids csv 在任何预处理之前 Ids ref0 the columns inc
  • CMake编译时生成源代码

    我在使用CMake时遇到以下情况 它必须构建两个应用程序 a 发电机 b 其他的东西 The 发电机没什么花哨的 几个 CPP 文件链接在一起 The 其他的东西 is A 一些 正常 CPP 文件 b 生成的 CPP h 文件 我必须链接
  • VS Code / Metals:如何使用远程调试器调试 Scala sbt 项目?

    我知道这个问题之前已经以某种形式被问过here https stackoverflow com questions 60495320 how to debug scala sbt project in vs code 但我根本不知道如何在
  • Rails 找不到 rake gem

    我有一个在 docker 中运行的基本 Rails 应用程序 我可以很好地启动它并提供响应 我可以跑rake T正好 但我无法运行 Rails 生成命令 它无法告诉我Could not find rake 12 3 1 in any of
  • CSS - 缩进列表项

    有没有办法使用 CSS 来缩进每个列表项 所以一个正常的列表 ul li One li li Two li li Three li li Four li ul 显示如下 One Two Three Four 在这里你可以使用 before具
  • 如何在java中将UUID保存为二进制(16)

    我有一个表 TestTable 其列 ID 为 binary 16 名称为 varchar 50 我一直在尝试将有序的 UUID 存储为 PK 就像本文中一样以优化的方式存储 UUID https www percona com blog
  • 使用 Restify 提供静态文件 (node.js)

    我有以下代码 app js server get docs public restify serveStatic directory public server listen 1337 function console log s list
  • AngularJS、PHP Restful Cors 问题

    我在尝试对我的其余 php 服务器进行 http 调用时遇到问题 我正在进行从客户端到后端的跨域调用 在我的 Angular 应用程序中 http 服务的配置方式如下 config httpProvider function httpPro