Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTTP基本身份验证与jQuery POST请求一起工作,但不支持_Javascript_Angularjs_Post_Basic Authentication - Fatal编程技术网

Javascript HTTP基本身份验证与jQuery POST请求一起工作,但不支持

Javascript HTTP基本身份验证与jQuery POST请求一起工作,但不支持,javascript,angularjs,post,basic-authentication,Javascript,Angularjs,Post,Basic Authentication,更新:两件事:第一,我从两个不同的域发出jQuery和Angular的POST请求。我需要测试来自同一域的两个请求,它们都可以工作。我试图使fiddle变得非常通用,这样您就可以交换配置值,并使用基本http身份验证测试XML POST请求,以满足您需要的任何站点。另一件事是,使用Angular$http服务,数据类型标头会导致以下错误:请求标头字段数据类型不被飞行前响应中的访问控制允许标头所允许。所以我删除了标题。我仍在排除为什么请求从一个域而不是另一个域工作。一旦我弄明白了,我会更新并标记为

更新:两件事:第一,我从两个不同的域发出jQuery和Angular的POST请求。我需要测试来自同一域的两个请求,它们都可以工作。我试图使fiddle变得非常通用,这样您就可以交换配置值,并使用基本http身份验证测试XML POST请求,以满足您需要的任何站点。另一件事是,使用Angular$http服务,
数据类型
标头会导致以下错误:
请求标头字段数据类型不被飞行前响应中的访问控制允许标头所允许。所以我删除了标题。我仍在排除为什么请求从一个域而不是另一个域工作。一旦我弄明白了,我会更新并标记为已解决/更新

以下带有基本身份验证的jQuery POST请求按预期工作:

var mapstory = {
  xml: '<?xml version="1.0" encoding="UTF-8"?> <wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" service="WFS" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"> <wfs:Update xmlns:feature="http://www.geonode.org/" typeName="geonode:dja_remote_service_edit_test"><ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:FeatureId fid="garbage_id" /></ogc:Filter></wfs:Update></wfs:Transaction>',
  url: 'https://demo.mapstory.org/geoserver/wfs/WfsDispatcher',
  auth: authToken //base64 encoded string of 'user:password'
};

$.ajax({
  url: mapstory.url,
  beforeSend: function(xhr) {
    xhr.setRequestHeader("Authorization", "Basic " + mapstory.auth);
  },
  type: 'POST',
  contentType: 'text/html',
  dataType: 'xml',
  processData: false,
  data: mapstory.xml,
  success: function(data) {
    console.log(data);
  }
});
但是,AngularJS(v1.2.21)中的以下内容不起作用:

var mapstory = {
  xml: '<?xml version="1.0" encoding="UTF-8"?> <wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" service="WFS" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"> <wfs:Update xmlns:feature="http://www.geonode.org/" typeName="geonode:dja_remote_service_edit_test"><ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:FeatureId fid="garbage_id" /></ogc:Filter></wfs:Update></wfs:Transaction>',
  url: 'https://demo.mapstory.org/geoserver/wfs/WfsDispatcher',
  auth: authToken //base64 encoded string of 'user:password'
};

var config = {
  withCredentials: true
};

config.headers = {
  'Authorization': 'Basic ' + mapstory.auth,
  'Content-Type': 'text/html',
  'Data-Type': 'xml'
};

$http.post(mapstory.url, mapstory.xml, config)
.success(function(data) {
  console.log(data);
});
我从上面的Angular请求中得到了一个有效的XML响应,但该响应表明该请求未经授权

我尝试用
application/xml
替换
Content-Type
值,但这对结果没有任何影响

我已经阅读了Angular$http文档,并接触了许多其他资源,例如其中描述了一个类似的问题。建议的解决方案是删除带有默认标题的
X-request-With
X-request-With。这一步在Angular 1.2以上的版本中显然是不必要的(Angular的Github上已经解决了这个问题),但我还是尝试了。不走运


任何关于这方面的指导都会很好。非常感谢您抽出时间阅读并考虑此问题。p> 服务器似乎无法将angular识别为同一个域应用程序。因此,您必须在web服务器头中包含值:access control allow origin:*以允许来自“外部”域的请求。

请求头有何区别?如果你得到的是两种不同的回答,它们肯定在某种程度上有所不同,这应该是一个很好的线索,可以看出遗漏了什么。
var mapstory = {
  xml: '<?xml version="1.0" encoding="UTF-8"?> <wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" service="WFS" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"> <wfs:Update xmlns:feature="http://www.geonode.org/" typeName="geonode:dja_remote_service_edit_test"><ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:FeatureId fid="garbage_id" /></ogc:Filter></wfs:Update></wfs:Transaction>',
  url: 'https://demo.mapstory.org/geoserver/wfs/WfsDispatcher',
  auth: authToken //base64 encoded string of 'user:password'
};

var config = {
  withCredentials: true
};

config.headers = {
  'Authorization': 'Basic ' + mapstory.auth,
  'Content-Type': 'text/html',
  'Data-Type': 'xml'
};

$http.post(mapstory.url, mapstory.xml, config)
.success(function(data) {
  console.log(data);
});
Content-Language: en
Content-Type: text/xml;charset=UTF-8
Date: Fri, 01 Jul 2016 20:52:13 GMT
Server: WSGIServer/0.1 Python/2.7.11
Vary: Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN