いつもお世話になっております。
セキュアアクセスが有効になっており、
IPアドレス制限が「 すべてのIPアドレスを拒否」 になっている環境で
REST APIを実行したところ、下記のエラーとなりました。
https://サブドメイン.cybozu.com/k/v1/record.json . Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘https://サブドメイン.s.cybozu.com ’ is therefore not allowed access. The response had HTTP status code 403.
使用ブラウザはクロームでクライアント証明書はインポート済みです。
解消するにはどうすればよいのでしょうか。
nejimaさん
セキュアアクセス用のホスト
サブドメイン.s.cybozu.com
にすると通ります。が、お答えになるのかと思いますが、実行条件やコードはどのようになっていますでしょうか。カスタマイズ用に埋め込んであるJavaScript内からのコール(kintone.api)であればこの辺は気にしなくて良いので、解決に至れないようでしたら教えていただければと思います。
返信ありがとうございます。
実行条件は
PC用のJavaScriptファイルとしています。
—コード抜粋—
kintone.events.on('app.record.detail.show', function (event) {
// ・・・更新項目の取得など・・・
var REST_URL = "https://サブドメイン.s.cybozu.com/k/v1/record";
kintone.api(REST_URL, "PUT", {
"app": event.appId,
"id": event.recordId,
"record": updateField
}, function (response1) {
console.log(response1);
location.reload();
});
return event;
});
var REST_URL = "https://サブドメイン.s.cybozu.com/k/v1/record";
ですと、405エラー
var REST_URL = "https://サブドメイン.s.cybozu.com/k/v1/record.json";
とすると、404エラーとなります。
kintone JavaScript APIであれば、まず
ドキュメント にありますがまずパス指定の
kintone.api('/k/v1/record', 'PUT', )
の形式でリクエストするとセキュアアクセスか通常アクセスかは意識しなくてよくなります。また、ゲストスペースを含めてURL指定方法の懸念を減らすには「kintone.apiにゲストスペースでも使える正しいパスを指定する 」にあります
kintone.api.url('/k/v1/record', true)
でURLを指定するのが良いかと思います。
通常アクセスで元々動いているものであれば、これだけで解決しそうな気がします。また、これでエラーが継続するようであれば、出方が変わると思います。Chromeでやられているのであれば、こちら にあるような方法でエラーの内容を確認してみてください。
解決いたしました。
エラーとなった原因は、
「 アプリの動作テスト環境 」でPUTメソッドを実行していたためでした。
結論としては、おっしゃる通りセキュアアクセスだからといって特別な対応は必要ありませんでした。(通常アクセスで元々動いているソースのまま)
ありがとうございました。
system
(system)
クローズされました:
2024 年 11 月 12 日午前 6:23
7
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。