です。:2つのこと:1つは、2つの異なるドメインからのjQueryとAngularのPOSTリクエストを発行していました。 I created a jsfiddleを使用して、同じドメインからの両方の要求をテストし、両方とも機能します。かなり一般的なものにして、設定値を入れ替えて、必要なサイトの基本HTTP認証でXML POSTリクエストをテストできるようにしました。もう1つは、角度$ httpサービスを使用して、Data-Type
ヘッダーの結果が次のエラーになることです。Request header field Data-Type is not allowed by Access-Control-Allow-Headers in preflight response
。だから私はそのヘッダーを削除しました。私は依然としてリクエストが1つのドメインからではなく、他のドメインでは動作していないのはまだ解決しています。私がそれを理解したら、私は更新し、解決済みとマークします。ここ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);
}
});
はレスポンスヘッダである:予想通り、基本認証では、次のjQuery POSTリクエストが機能/更新
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin,Content-Type,Accept, Authorization, x-requested-with
Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE
Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
Connection: keep-alive
Content-Length: 0
Date: Fri, 01 Jul 2016 21:06:50 GMT
Server: nginx
access-control-allow-origin: http://localhost:8888
しかし、AngularJSに下記(v1.2.21)のdoesnの仕事:
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);
});
私はこのreから次の応答ヘッダーを受け取りますクエスト:
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
私は上記の角度の要求から有効なXMLレスポンスを得るが、応答は要求が許可されなかったことを示しています。
Content-Type
の値をapplication/xml
に置き換えようとしましたが、これは結果に影響しませんでした。
私はAngular $ httpのドキュメントを読んで、同様の問題を説明しているthis Stack Overflow questionなどの他の多くのリソースにアクセスしました。推奨される解決策は、X-Requested-With
デフォルトヘッダーを削除することです。このステップは、1.2以上のAngularバージョン(Angular's Githubの場合はhere'sの閉鎖問題)では明らかに必要ではありませんが、どうしようもありませんでした。運がない。
これに関するガイダンスはすばらしいと思います。 非常にこれを読んで、これを考慮する時間を取るために多くをありがとう!
リクエストヘッダはどのように異なるのですか?あなたが2つの異なる反応を得ているならば、***は何らかの形で違いがなければなりません。そして、それは欠けているものについてのかなり良い手がかりになるはずです。 –