JSONファイルを作成し、このJSONをこのようにローカルホストサーバーに送信しようとするJavaスクリプトからJSONオブジェクトを受け取るサーバーへの単純なHTMLテストファイルがあります。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<body>
<button type="button" onclick="doPost()">
POST
</button>
<script src="/home/tcremers/projects/utopiaPlugins/src/3dmUtopia/js/libs/jquery.js"></script>
<script>
function doPost() {
var JSONdata = {jsonobject}
try{
$.ajax({
type: 'POST',
url: "http://localhost:8080/validation-web/annotation/persist",
contentType:'application/json',
data: JSON.stringify(JSONdata),
dataType:'json'
});
console.log("do you even output")
}
catch(e) {
console.log("errrrorrrrr")
conlole.log(e)
}
}
</script>
</body>
</html>
サーバーには、サーバーを最初に起動したコマンドターミナルでjsonオブジェクトを返すように設定するJAVAコードがあります。しかし、サーバーに到達する前に、クロムは「Origin nullはAccess-Control-Allow-Originでは許可されていません」と表示します。
セキュリティ上の問題により、クロスドメイン AJAX は最初は許可されていないことがわかりました。また、これを無効にできることも読みました。このセキュリティ機能を無効にする方法について明確な回答がある投稿を見たことがありません。たとえば、コマンド ラインからすべてのセキュリティを無効にして chromium を実行しようとしましたが、実行されませんでした。また、Access-Control-Allow-Origin を " * "、または Java スクリプトを実行するディレクトリ パスに設定する必要があることについてもよく読んだため、クロス ドメイン AJAX が有効になります。多分それは私ですが、このコマンドを実際に変更または挿入する場所の明確な説明を見たことがありません。また、「GET」リクエストでjsonpを使用しようとしましたが、どちらも機能しません。
curlコマンドでテストしたので、私が知っている実際のサーバーは機能します。
curl -X POST -H "Content-Type: application/json" -d '{the JSON object}' http://localhost:8080/validation-web/annotation/persist
今、私にとって実際の奇妙なことはこれです。この AJAX リクエストを使用したいメインの Java スクリプト コードは、Web ブラウザでまったく実行されておらず (また、私の考えでは、クロス ドメイン制限に問題はないと考えられます)、他の多くのサーバー リクエストも既に含まれています。それでも、このスクリプトは、この特定の AJAX リクエストでも同様のエラーを出します。これはエラー メッセージです: "XMLHttpRequest cannot load, http://localhost:8080 etc..., Cannot make any requests from null
。
私の問題がここにあることを知っている人はいますか、またはこのエラーを解決する正しい方向に私を向けることができますか? それは大歓迎です。