HTTP データリクエストを作成したら、「HTMLリクエストへのアクセスはcorsポリシーによってブロック されています」という赤いエラーに見舞われたことはないだろうか?
あなたのサイトがWebサービスサーバーと同じドメインにある場合は問題ありません。しかし、クロスオリジンリクエストを実行するとそうはいきません。ブラウザのセキュリティにより、別のドメインへのHTTPリクエストが阻止されるため、アクセスが拒否されます。その結果は?CORSポリシーエラーです。
サーバー上で特定のクロスオリジンリクエストを明示的に許可するために、4Dは現在、CORSプロトコルをサポートしています。クロスオリジンリクエストでデータにアクセスすることが簡単になりました。
CORSプロトコルは、Webページが自分自身のドメイン以外のドメインにリクエストを行うことができるようにするものです。しかし、時には、他のサイトがあなたのサーバーにHTTPデータリクエストを行うことを許可する必要があるかもしれません。幸い、4Dは CORSルールを定義し、特定のクロスオリジンリクエストを明示的に許可する方法を2つ提供しています。
- プログラミングによる方法、または
- データベース設定による方法です。
プログラミングによるCORSの管理
2つのコマンドでCORSを有効にすることができます。
//CORS Domains Settings
$settings:=New collection
$settings .push(New object("host"; "127.0.0.1:8888"; "methods"; "get;put;post")
$settings .push(New object("host"; "https://blog.4d.com/"; "methods"; "get;post")
//enable CORS
WEB SET OPTION (Web CORS enabled;1)
//CORS Domains Settings
WEB SET OPTION (Web CORS settings;$settings)
//start web server to apply CORS settings
WEB START SERVER
$hostWS
//CORS Domains Settings
$setting:=WEB Server(Web host database server)
$setting :=New object
//Enable CORS $setting .CORSEnabled:=True
$setting CORSSettings :New collection$setting CORSSettings push (New object("host"; "127.0.0.1:8888"; "methods"; "get;put;post"))
$setting .CORSSettings.push(New object("host"; "https://blog.4d.com/"; "methods"; "get;post") )
//start web server and apply CORS settings
$hostWS.
start( xml-ph-0
)
データベース設定によるCORSの管理
設定>Web>オプション(II)タブで新しい設定が可能です。
許可されたドメイン名と利用可能なメソッドを追加するだけです。サーバーが次に起動したとき、それらは自動的に使用されます。