セキュアアクセス上でのREST APIについて

いつもお世話になっております。

セキュアアクセスが有効になっており、

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メソッドを実行していたためでした。

結論としては、おっしゃる通りセキュアアクセスだからといって特別な対応は必要ありませんでした。(通常アクセスで元々動いているソースのまま)

ありがとうございました。

 

プレビュー環境でしたか。

解決されたようで、良かったです。