質問: postmanが表示しないのにjavascriptが「no 'access-control-allow-origin'ヘッダが要求されたリソースに存在します」というエラーを表示するのはなぜですか? javascript を使用して、 restful _ api _ に組み込まれた flask を使用して認証を試みます。しかし、リクエストをすると、次のようなエラーが表示されます。 xmlhttprequestは http:// myapiurl/login をロードできません。要求されたリソースに 'access-control-allow-origin'ヘッダーがありません。したがって、起点 'null'はアクセスを許可されていません。 apiまたはリモートリソースがヘッダーを設定する必要があることはわかっていますが、chrome拡張機能 postman を使用してリクエストを行ったときに、なぜそれが機能したのですか。これはリクエストコードです:$.ajax({ type: "post", datatype: 'text', url: api, username: 'user', password: 'pass', crossdomain : true, xhrfields: { withcredentials: true } }) .done(function( data ) { console.log("done"); }) .fail( function(xhr, textstatus, errorthrown) { alert(xhr.responsetext); alert(textstatus); });
回答: なぜなら $ .ajax({type: "post" - 呼び出し _ options _ $ .post( - 呼び出し _ post _ どちらもpostmanが適切に "post"を呼び出しますが、呼び出したときは "options"になります。 c#webサービスの場合 - webapi 次のコードを<system.webserver>タグの下のweb.configファイルに追加してください。これはうまくいくでしょう<httpprotocol> <customheaders> <add name="access-control-allow-origin" value="*" /> </customheaders> </httpprotocol> あなたがajax呼び出しで何か間違いをしていないことを確認してくださいjquery$.ajax({ url: 'http://mysite.microsoft.sample.xyz.com/api/mycall', headers: { 'content-type': 'application/x-www-form-urlencoded' }, type: "post", /* or type:"get" or type:"put" */ datatype: "json", data: { }, success: function (result) { console.log(result); }, error: function () { console.log("error"); } }); angular 4号を参照してください。 http://www.hubfly.com/blog/solutions/how-to-fix-angular-4-api-call-issues/ / 注: あなたがコンテンツをダウンロードするのを探しているなら 第三者のウェブサイトから then これはあなたを助けてくれないでしょう 次のコードを試すことはできますが、javascriptはできません。system.net.webclient wc = new system.net.webclient(); string str = wc.downloadstring("http://mysite.microsoft.sample.xyz.com/api/mycall");