2017-04-06 8 views
0

これは(AJAX XMLHTTPを使用して)私の現在の要求モデルです:HTMLフォームを使用してPOST本体で名前のないXMLデータを送信する方法は?

POST someURL/someURL/someURL HTTP/1.1 
 
Host: xxx.yyy.com 
 
Connection: close 
 
Content-Length: 221 
 
Origin: https://xxx.yyy.com 
 
X-Requested-With: XMLHttpRequest 
 
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 
 
Content-type: text/xml;charset=UTF-8 
 
Accept: */* 
 
Accept-Encoding: gzip, deflate, br 
 
Accept-Language: en-US,en;q=0.8 
 

 

 
<zadata>SOMEXMLDATA</zadata> 
 

私はAJAXのXMLHTTPリクエストのボディにアンという名前のXMLデータを送信しています。

私は別のドメインからこのリソースをリクエストしているので、AJAX(HTMLフォームまたは他の方法を使用)を使用せずに同じことを達成したいと考えており、Webページで直接レスポンスをレンダリングする必要があります。 (AJAXはSOPで動作しません)

enctypeを試してみましたが、<form>には届きませんでした。助けて?

アップデート:私は<input>name属性内のXMLの一部を挿入しようとした、と<input>value属性内の別の部分。

XMLデータ:このような<zadata><param data=someValue></param></zadata>

<input type="text" name ="<zadata><param data" value="someValue></param></zadata>">

要求はこのように書きます:%3Czadata%3E%3Cparam+data=someValue%3E%3C%2Fparam%3E%3C%2Fzadata%3E

=シンボルは、挿入およびフォーマットはリクエストで結構ですされましたが、ブラウザコンテンツをURLエンコードします。このエンコーディングを防止する方法はありますか?

答えて

0

enctype値がtext/plainで、<form>の属性が正常に機能しました。 これは私がそれを達成する方法である:今

<form action="http://someURL.com" method="POST" enctype="text/plain"> 
<input type="text" name ="<zadata><param data" value="someValue></param></zadata>"> 
<input type="submit" value="Submit request"> 
</form> 

リクエストモデル:

POST http://someurl.com/ HTTP/1.1 
Host: someurl.com 
Content-Length: 47 
Cache-Control: max-age=0 
Origin: null 
Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 
Content-Type: text/plain 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 
Connection: close 

<zadata><param data=someValue></param></zadata> 
1

これは不可能です。これはフォームによってサポートされている形式ではありません。

しかし、ブラウザはコンテンツをURLエンコードします。このエンコーディングを防止する方法はありますか?

...はい。代わりに複数のリクエストにしてください。代わりにマルチパートエンコードされますが、これはあなたが望むものではありません。

プレーンなHTMLフォームを使用するよう求めているフォーマットを取得することはできません。

+0

痛いです。フォーム以外のこれを実現するものはありますか? –

+0

HTMLはPOST要求を行うか、ユーザー入力を受け入れる唯一のメカニズムです。 – Quentin

+0

私は 'enctype =" text/plain "'を使ってそれを実現しました。コメントしてくれてありがとう。 –

関連する問題