相关疑难解决方法(0)

Ajax API调用的Base64身份验证

我正在尝试获得基本的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)

ajax jquery

7
推荐指数
1
解决办法
2374
查看次数

从Angular 2调用WCF服务

我目前正在从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类(组件)用于传递带有请求的头,但仍然发生相同的错误. …

c# wcf angular

7
推荐指数
1
解决办法
5099
查看次数

一个用户的访问控制允许来源错误

我有一个 WCF 服务与另一个 Web 应用程序托管在同一服务器上,但端口不同。Web 应用程序使用 jQuery 在 WCF 服务上执行 get/post 请求,在配置 WCF 服务以允许跨源请求后,它可以正常工作并符合预期。

一个问题是有时(并非总是)请求不起作用,在查看 Chrome 开发控制台后,WCF 服务会抛出以下错误:g

XMLHttpRequest 无法加载 {url}。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“{origin}”。响应的 HTTP 状态代码为 403。

我根本无法复制这一点,而且他和其他用户一样使用 Google Chrome。难道是他的机器?

c# wcf cors

6
推荐指数
1
解决办法
1895
查看次数

“ Access-Control-Allow-Origin”标头包含多个值

我正在尝试将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)

ajax jquery json google-chrome cross-domain

6
推荐指数
2
解决办法
4万
查看次数

Reactjs axios 获取带有自定义标头的请求

我需要打这个电话

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 中。

javascript ajax reactjs axios

6
推荐指数
2
解决办法
3万
查看次数

Youtube API - 无法在'DOMWindow'上执行'postMessage'

我正在尝试在打开模态时启动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)

javascript youtube

6
推荐指数
1
解决办法
1万
查看次数

PeerJS 入门

我正在尝试最简单的例子,直接从他们的网站上提取。这是我的整个 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)

我究竟做错了什么?

@reyad 已请求“完整跟踪请求和响应”。这是我在 Firefox 的网络选项卡中看到的内容:Firefox 网络选项卡

这是 Chrome: Chrome 网络标签

还有一点点Chrome: 更多铬

peerjs

6
推荐指数
1
解决办法
2095
查看次数

从Amazon S3存储桶中丢失Access-Control-Allow-Origin标头

我的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)

amazon http amazon-s3 amazon-web-services cors

5
推荐指数
1
解决办法
2715
查看次数

Chrome 与 Firefox - 为什么 CORS 标头的行为不同,我应该如何使用它们?

我正在使用 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)

javascript ajax firefox jquery google-chrome

5
推荐指数
0
解决办法
2936
查看次数

fetch-api 请求(GET 和 POST)失败。我很失落

我已经为钱编写代码 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)

javascript server-sent-events fetch-api svelte fastapi

5
推荐指数
1
解决办法
742
查看次数