我正在尝试获得基本的API调用,但API提供程序不提供任何开发人员支持.它们要求每个呼叫都在base64基本身份验证标头中发送.当我使用他们的在线API测试实用程序时,我的密钥是有效的,但我不能让它在我自己的代码或JSFiddle.net中工作.我甚至试图复制从我的代码中的测试实用程序返回的"身份验证:基本...."值,但这不起作用.
我在Stackoverflow中查看了很多示例,并且我对其他API使用类似的代码没有问题.base64基本身份验证对我来说是新的,当我在IE中运行代码时,调试器会声明一个我找不到的语法错误.如果发生任何错误,我期待401错误.
有关错误的任何想法或其他调试方法?
$(document).ready(function() {
var mySecret = "somevalue";
var myClientId = "somevalue";
$.ajax({
url: "https://www.udemy.com/api-2.0/courses/",
type: 'GET',
dataType: "json",
contentType: "text/plain",
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa(myClientId+":"+ mySecret));
},
success: function(data) {
alert("hi");
}
});
});
Run Code Online (Sandbox Code Playgroud) 我目前正在从Angular 2服务(名为app.service.ts的文件)调用Web Api方法,该服务返回数据,我能够将该数据绑定到我的页面.
现在我想从Angular 2服务(名为app.service.ts的文件)中调用WCF服务.我已经尝试过与Web Api相同的功能.但它会导致Allow-Access-Origin错误.我也传递标题来解决它.但问题仍然存在.
import {Http,Response,Headers,RequestOptions} from "@angular/http"
import { Observable } from 'rxjs/Rx';
@Injectable()
export class HeroService {
Hero = [];
baseUrl = 'http://192.168.0.4/ITM1.3/Service1.svc/Delete502/';
constructor(private _http: Http) {
this.loadHeroes();
}
loadHeroes() {
let headers = new Headers({ 'Content-Type': 'application/json' },{'Access-Control-Allow-Origin' : '*'},{'Access-Control-Allow-Methods' : 'POST, GET, OPTIONS, PUT, DELETE'});
let options = new RequestOptions({ headers: headers });
return this._http.get(this.baseUrl+"Login/harshad.bhola@etatvasoft.com1/1",options)
.map((response: Response) => {
console.log(reponse);
let heroData = response.json();
return heroData;
})
.do(data => console.log(data))
.catch(this.handleError);
}
}
Run Code Online (Sandbox Code Playgroud)
我还准备了一个http-client类(组件)用于传递带有请求的头,但仍然发生相同的错误. …
我有一个 WCF 服务与另一个 Web 应用程序托管在同一服务器上,但端口不同。Web 应用程序使用 jQuery 在 WCF 服务上执行 get/post 请求,在配置 WCF 服务以允许跨源请求后,它可以正常工作并符合预期。
一个问题是有时(并非总是)请求不起作用,在查看 Chrome 开发控制台后,WCF 服务会抛出以下错误:g
XMLHttpRequest 无法加载 {url}。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“{origin}”。响应的 HTTP 状态代码为 403。
我根本无法复制这一点,而且他和其他用户一样使用 Google Chrome。难道是他的机器?
我正在尝试将get请求发送到api,就像它是登录网址
var url = "http://demo.software.travel/gptp/api/authorization?apiKey=****&alias=****&login=****&password=****"
$.get(url, function(data) {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
我在控制台中收到此错误
XMLHttpRequest无法加载http://demo.software.travel/gptp/api/authorization?apiKey= ****&alias = ****&login = ****&password = ****。“ Access-Control-Allow-Origin”标头包含多个值“ http://travellights.net,* ”,但仅允许一个。因此,不允许访问源“ http://travellights.net ”。
我试图在这里看到解决问题的方法,但是我没有得到我需要更改的内容,实际上这很烦人。
“ Access-Control-Allow-Origin”标头包含多个值
这由asp.net web.congif解决
顺便说一句,我正在使用CHROME BROWSER,我感激不尽。
UPDATE响应头:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:origin, x-requested-with, Content-Type, accept, Token
Access-Control-Allow-Methods:GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
Access-Control-Allow-Origin:http://travellights.net
Access-Control-Allow-Origin:*
Connection:close
Content-Encoding:gzip
Content-Type:application/json;charset=utf-8
Date:Thu, 02 Jun 2016 16:41:18 GMT
Server:nginx/1.1.19
Set-Cookie:JSESSIONID=51FEE1A1206B9B481DD3EEA4167A9256; Path=/gptp
Vary:Origin
Vary:Accept-Encoding
X-UA-Compatible:IE=EmulateIE7
Run Code Online (Sandbox Code Playgroud)
请求标头:
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,ar;q=0.6,en-GB;q=0.4
Connection:keep-alive
Host:demo.software.travel
Origin:http://travellights.net
Referer:http://travellights.net/b2b/Pages/login? …Run Code Online (Sandbox Code Playgroud) 我需要打这个电话
axios.get("http://127.0.0.1/myapi/test.php").then((response) => {
})
Run Code Online (Sandbox Code Playgroud)
如果我这样做,一切正常,HTTP 方法是 GET,但如果我更改为这个
var config = {
headers: {"X-Id-Token": "abc123abc123"}
};
axios.get("http://127.0.0.1/myapi/test.php", config).then((response) => {
})
Run Code Online (Sandbox Code Playgroud)
HTTP方法是OPTIONS,调用失败,为什么?
编辑
我正在使用节点(localhost:3000)运行reactjs项目,并在IIS上调用php api(http://127.0.0.1/myapi)
解决方案
Axios 客户端发出“ping”请求来检查地址是否可达。因此,第一次调用是在 OPTIONS 方法中,后面的调用是在 GET 中。
我正在尝试在打开模态时启动youtube视频,直到完成后才进入下一页.
我的下面的脚本适用于Chrome,但在Firefox和Edge中会产生此错误.
无法在'DOMWindow'上执行'postMessage':提供的目标源(' https://www.youtube.com ')与收件人窗口的原点(' http://example.com ')不匹配.
使用Javascript
<script src="http://www.youtube.com/player_api"></script>
<script>
// autoplay video
function onPlayerReady(event) {
event.target.playVideo();
}
// when video ends
function onPlayerStateChange(event) {
if(event.data === 0) {
alert('Thank you for watching - Click OK to see your results');
}
}
</script>
<script language="JavaScript">
$(document).ready(function() {
$('#post_form').submit(function() { // catch the form's submit event
$("#adModal").modal("show");
var time = $('#adtime').val();
//startCountdownTimer(time) ;
// create youtube player
var player;
player = new YT.Player('player', {
width: '640',
height: '390',
videoId: 'EF-jwIv1w68', …Run Code Online (Sandbox Code Playgroud) 我正在尝试最简单的例子,直接从他们的网站上提取。这是我的整个 html 文件,代码完全取自https://peerjs.com/index.html:
<script src="https://unpkg.com/peerjs@1.3.1/dist/peerjs.min.js"></script>
<script>
var peer = new Peer();
var conn = peer.connect('another-peers-id');
// on open will be launch when you successfully connect to PeerServer
conn.on('open', function(){
// here you have conn.id
conn.send('hi!');
});
</script>
Run Code Online (Sandbox Code Playgroud)
在 Chrome 和 Edge 中,我在控制台中得到了这个:
peerjs.min.js:64 GET https://0.peerjs.com/peerjs/id?ts=15956160926060.016464029424720694 net::ERR_CONNECTION_REFUSED
Run Code Online (Sandbox Code Playgroud)
在 Firefox 中,我得到了这个:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://0.peerjs.com/peerjs/id?ts=15956162489620.8436734374800061. (Reason: CORS request did not succeed).
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我的Amazon S3存储桶有以下CORS配置.问题是配置似乎完全被忽略了.从存储桶请求对象时,我没有获得任何Access-Control-Allow-Origin标头.是否有任何家庭有类似的问题或调试提示?
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://localhost:8100</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
Run Code Online (Sandbox Code Playgroud)
这是我的保管政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example.com/*"
}
]}
Run Code Online (Sandbox Code Playgroud) 我正在使用 CORS 标头进行 Ajax 调用。简而言之,在 Firefox 中,一切都运行良好,在 Chrome 中我收到一个错误:"Refused to set unsafe header Access-Control-Request-Method",对于 Access-Control-Request-Headers 也是如此。
所以,我只是很困惑。就像,非常困惑。为了让 CORS 在 Chrome 和 Firefox 中正常工作,我必须做什么?
不过,我要说的奇怪之处在于,尽管出现了错误,Chrome 似乎还是执行了 Ajax 调用。
我只是总体感到困惑,我对 JavaScript 很陌生,对 CORS 也很陌生,只是想让这项工作正常进行。
PS - 所有这些都是通过 IntelliJ 进行本地开发,不确定,但这可能是一个因素。
聚苯硫醚。简短摘要:Firefox 中一切正常,Chrome 中出现错误,但它仍然可以正确执行请求。
购买力平价。这是我用于所有 Ajax 调用的代码。
function(uri, method, json){
return $.ajax({
url: orgProps.serverOrigin + ensurePrecedingSlash(uri),
type: method,
headers: (function(){
var result = {
"Access-Control-Request-Headers": [
"X-Requested-With",
"Authorization"
],
"Access-Control-Request-Method": method
};
var token = jwt.getToken();
if(token !== undefined && token !== …Run Code Online (Sandbox Code Playgroud) 我已经为钱编写代码 20 多年了,但我没有理由回答这个问题。
天哪,我用谷歌搜索过它。我知道这里有很多半相同的问题,我想我已经阅读了所有的回答,并尝试了所有建议的模式。许多问题都没有得到特别明确的阐述,而且我的案例似乎有点自相矛盾(所有部分都是孤立工作的)。请耐心等待,我会尽力而为。
前面使用 svelte-kit,后面使用 fastapi。
首先,下面是我的“Buttons.svelte”组件,逐字复制。
<script lang="javascript">
async function worksJustFine() {
fetch("https://jsonplaceholder.typicode.com/todos")
.then(response => {
console.log(" response", response)
console.log(" r.json() >", response.clone().json())
response.json()
.then(json => {
console.log("json", json)
})
.catch(error => console.log(error))
})
}
async function doesNotWork() {
fetch(`http://localhost:8000/api/test_url?test_param=1`)
.then(response => {
console.log(" response", response)
console.log(" r.json() >", response.clone().json())
response.json()
.then(json => {
console.log("json", json)
})
.catch(error => console.log(error))
})
}
</script>
<buttons>
<button class="btn btn-outline-primary btn-lg" on:click={worksJustFine}>OK</button>
<button class="btn btn-outline-primary btn-lg" on:click={doesNotWork}>NOT OK</button>
</buttons>
<style lang="scss"> …Run Code Online (Sandbox Code Playgroud)