- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 AngularJS 中,我在一个子域中有我的 Restful API,但我遇到了 cookie/session 没有跨域共享的问题。对于 Angular,我这样做:
app.config(['$httpProvider',
function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}]);
另外,当我用 $http 发出请求时,我正在做
var object = {};
object.url = '/example'
object.withCredentials = true;
$http(object).success(object.success).error(object.error);
在我的服务器端我有:
if($_SERVER['REQUEST_METHOD']=='OPTIONS') {
if(isset($_SERVER['HTTP_X_FOWARDED_HOST']) && !empty($_SERVER['HTTP_X_FOWARDED_HOST'])) {
$origin=$_SERVER['HTTP_X_FOWARDED_HOST'];
} else {
$origin=$_SERVER['HTTP_ORIGIN'];
}
if(isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']) && ($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']=='POST' || $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']=='DELETE' || $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']=='PUT')) {
header('Access-Control-Allow-Origin: '.$origin);
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: *,X-Requested-With,Content-Type');
//header('Access-Control-Allow-Headers: Content-Type');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT');
// http://stackoverflow.com/a/7605119/578667
header('Access-Control-Max-Age: 86400');
}
}
现在我看到服务器说它将允许凭据,但它没有在选项请求中发送。屏幕截图如下。
我做错了什么?
最佳答案
默认情况下,凭证不会在 CORS 飞行前 OPTIONS 请求中发送。 See here .另见 answer .凭据将根据您的实际请求发送。
此外,useXDomain 和 X-Request-With header 实际上并未在当前版本的 Angular 中使用,因此这些行在您的 $httpProvider 配置中没有任何作用。所有 CORS 交互都由浏览器本身和您的服务器处理。
一般来说,要正确实现 CORS,您的服务器不应在预检请求中要求凭据。 (请注意,某些浏览器无论如何都会发送它们,但不应该发送。)这是因为 OPTIONS 请求被认为是“安全的”,不应包含任何 secret 信息。
您的问题可能出在您尝试跨域共享的 cookie 中。您要发送什么 cookie?
关于javascript - AngularJS withCredentials 不发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22100084/
你能帮我解决一点麻烦吗? 我尝试使用 jenkins 和您出色的插件找到解决方案:uno-choice,但我做不到。 我有一个非常简单的脚本: #!/usr/bin/env groovy def so
我有一个 jenkins 管道,它是使用脚本语法编写的,我需要使用声明式样式将它变成一个新管道。 这是我与 jenkins 的第一个项目,我一直在研究如何在声明性 jenkins 中翻译 withCr
在 AngularJS 中,我在一个子域中有我的 Restful API,但我遇到了 cookie/session 没有跨域共享的问题。对于 Angular,我这样做: app.config(['$h
我在使用请求连接到 Angular2 组件中的 Neo4j 时遇到了 CORS 问题: Response to preflight request doesn't pass access contro
我正在尝试使用 withCredentials 将 cookie 连同我的服务一起发送,但找不到如何实现它。文档说“如果服务器需要用户凭据,我们将在请求 header 中启用它们”,但没有示例。我尝试
我们正在实现一个基于 AngularJS 的应用程序,它使用托管在不同域中的 rest 网络服务。以下脚本用于 CORS,它在 Chrome 和 FireFox 上完美运行。验证时在 IE9 和 Sa
我注意到某些浏览器似乎不支持 CORS 请求中的 withCredentials,至少在某些情况下是这样。具体来说,在 IE 10 中,尝试设置 xhr.withCredentials = true
假设您有一个场景,您有一个用户名和密码凭证,您希望将其用作填充(事实上的)标准 http_proxy 环境变量的一部分。第一次尝试是这样的: withCredentials([usernameColo
当我尝试使用 User-Scoped Credentials(那些为特定用户定义的 - 不在Jenkins -> 凭据配置 我想创建一个参数化构建,用户可以在其中选择用户定义的凭据。像这样的东西: w
我正在尝试使用 jQuery.ajax() withCredentials:true 跨域,但由于某种原因它在 Safari 中不起作用。 它可以在 Firefox、Chrome 和 IE(使用 P3
我正在尝试做一个 CORS GET 来发送 cookie。我已经在服务器中设置了所有标题( access-control-allow-origin 、 access-control-allow-cre
希望这个问题很容易回答。 通过 XHR2 中的凭证请求,会发送哪些 cookie? 我一直在关注the MDN article on credentialed requests ,它显示 cookie
我在使用节点和 Angular CORS 时遇到问题,添加此选项时 true 解决了我的问题。但是我找不到有关它是什么以及它在做什么的信息。请问有人可以解释一下吗? 最佳答案 简答: withCred
我正在使用 HTML5、jQuery 1.6.1、jQuery Mobile 1.0.1。 我正在使用以下代码发出 Ajax 请求。它在 Chrome 中运行良好,但在 Firefox 14.0.1
我正在尝试登录系统。在 Angular 1 中,有一些方法可以设置 withCredentials:true 但我在 angular2 中找不到可行的解决方案 export class LoginCo
我有一个基于 Jenkinsfile 的参数化 Jenkins 管道.一些参数包含我不想出现在作业的构建日志中的敏感密码。 所以我的问题是:我可以以某种方式在 Jenkinsfile 中注册一个字符串
我正在一个 Angular 网站上工作: • 本地主机/测试上的 .Net Framework 服务器 • 本地主机上的客户端:4200 我有 cookie 身份验证工作,我的 GET 请求工作正常。
我正在尝试实现一个身份验证服务,该服务部署在与我的登录页面不同的 HTTP 服务器中。 下图描述了我的设置: 在步骤 #1 我的浏览器生成 HTTP GET请求获取登录页面。这在 #2 中作为 HTT
我创建了调用以下函数的 Jenkins 管道...它使用 StreamingTemplateEngine 对象创建了一个 Template 变量...但它给出了一个错误 def call() {
我在 Chrome 中验证 CORS 请求时遇到问题。 我有在本地主机上运行的单页应用程序和在 Azure 中运行的 Web 服务。我使用 OpenIdConnect 登录。 当我像这样在 EDGE
我是一名优秀的程序员,十分优秀!