相关疑难解决方法(0)

什么是正确的JSON内容类型?

我一直在忙着JSON一段时间,只是把它作为文本推出它并没有伤害任何人(我知道),但我想开始正确地做事.

我见过这样的JSON内容类型很多所谓的"标准":

application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json
Run Code Online (Sandbox Code Playgroud)

但哪个是正确的,还是最好的?我认为它们之间存在安全性和浏览器支持问题.

我知道有一个类似的问题,如果REST API返回JSON,那么MIME类型是什么?,但我想要一个稍微有针对性的答案.

json content-type http-headers

9962
推荐指数
38
解决办法
265万
查看次数

什么是JSONP,为什么创建它?

我理解JSON,但不了解JSONP.维基百科关于JSON的文档是JSONP的最佳搜索结果.它说:

JSONP或"带填充的JSON"是JSON扩展,其中前缀被指定为调用本身的输入参数.

咦?什么电话?这对我没有任何意义.JSON是一种数据格式.没有电话.

第二个搜索结果是由某些人叫雷米,谁写的这个约JSONP:

JSONP是脚本标记注入,将响应从服务器传递到用户指定的函数.

我可以理解这一点,但它仍然没有任何意义.


那么什么是JSONP?它为什么被创建(它解决了什么问题)?为什么我会用它?


附录:我刚刚在维基百科上为JSONP创建了一个新页面 ; 根据jvenema的回答,它现在对JSONP进行了清晰而全面的描述.

javascript json jsonp terminology

2040
推荐指数
8
解决办法
46万
查看次数

Ajax Web服务调用 - 不存在"Access-Control-Allow-Origin"标头

嘿呀,

我知道之前已经问过这个问题,我已经阅读了每个问题的每一个答案,但似乎仍然无法让我的项目正常运行.我的情景与其他问题有点不同,不确定这是否有所不同,但我们走了.

我有一个由Web服务组成的项目.仅服务工作正常,没有问题.还有另一个项目处理事物的UI部分并通过jquery ajax调用这些服务.它一直工作正常,因为我之前没有在Google Chrome上测试过此案例.一切都在Internet Explorer上完美运行.

现在; 我的Web服务应用程序在端口40000(localhost:40000)上运行,UI项目在其他一些随机端口上运行但仍在localhost中.就像我说的,我的ajax调用等在Internet Explorer上完美运行,但是当涉及到谷歌Chrome时,它就失败了.控制台显示以下错误:

XMLHttpRequest cannot load http://127.0.0.1:40000/abc.asmx/TheMethodName. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:17256' is therefore not allowed access. The response had HTTP status code 400.
Run Code Online (Sandbox Code Playgroud)

顺便说一下,它之前就像"localhost:40000",因此互联网上的一些帖子建议我将其更改为IP地址而不是localhost.

无论如何,我还在我的web服务项目上编辑了我的web.config文件并添加了以下内容(这没有任何意义)

<system.serviceModel>
  <bindings>
    <webHttpBinding>
      <binding name="crossDomain" crossDomainScriptAccessEnabled="true">
      </binding>
    </webHttpBinding>
  </bindings>

  <behaviors>

    <serviceBehaviors>
      <behavior>
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>

  </behaviors>

  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>


<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="http://localhost:17256" />
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Methods" value="GET, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net ajax jquery web-services

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

使用激活码发布小部件(Web应用程序)

我不知道这是否是提出这个问题的合适地方,但我只是想去做.我一直试图弄清楚我想如何发布我的网络应用程序.

这是我的情况:

我创建了一个Web应用程序.想要使用此应用程序的人可以免费使用.他们需要在我们的网站上注册.
应用程序需要绑定到唯一键.一旦他们在我们的网站上注册,就会生成此密钥.
该应用程序托管在我们的服务器上.
Web应用程序需要易于实现.

我见过:

我见过生成JS脚本的其他服务,例如:

<script type='text/javascript' data-cfasync='false'>window.exampleApi = { l: [], t: [], on: function () { this.l.push(arguments); } }; (function () { var done = false; var script = document.createElement('script'); script.async = true; script.type = 'text/javascript'; script.src = 'https://app.example.com/VisitorWidget/WidgetScript'; document.getElementsByTagName('HEAD').item(0).appendChild(script); script.onreadystatechange = script.onload = function (e) { if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) { var w = new PCWidget({c: 'e01fe420-5c14-55p0-bbec-229c7d9t2f0cf', f: true }); done = true; } …
Run Code Online (Sandbox Code Playgroud)

javascript php iframe jquery cors

8
推荐指数
1
解决办法
188
查看次数

在React App中将事件触发到私人频道

我想触发一个推送器专用通道事件,而我的服务器端语言是laravel,我检查了很多资源,但是我没有找到涵盖服务器端和前端的全面方法。最后,我在第一个解决方案中步 :

 export const SendChat = () => {
    try {
        var pusher = new Pusher('YOUR_APP_KEY', {
            cluster: 'ap2',
            forceTLS: true,
            authTransport: 'jsonp',
            authEndpoint: `${baseUrl}pusher/auth`,
        });
        var channel = pusher.subscribe('private-channel');
        channel.bind('pusher:subscription_succeeded', function() {
            var triggered = channel.trigger('client-EVENT_NAME', { 'message': 'Hi ....' });
            console.log(triggered)
        });

    } catch (error) {
        console.error(error);
    }
}
Run Code Online (Sandbox Code Playgroud)

叫它到某个地方

<Button onClick={this.props.SendChat}  waves='light' >Send</Button>
Run Code Online (Sandbox Code Playgroud)

您必须在推送器帐户设置中启用客户端事件

login to your pusher account -> select the channel ->App Settings -> select Enable client events -> update
Run Code Online (Sandbox Code Playgroud)

添加您的应用程序密钥,通道名称和事件名称之后,我们需要在服务器端进行授权,这是示例laravel代码,首先在web.php中添加此路由

Route::get('pusher/auth', 'PusherController@pusherAuth');
Run Code Online (Sandbox Code Playgroud)

使PusherController.php像这样:

public …
Run Code Online (Sandbox Code Playgroud)

real-time laravel pusher reactjs react-native

8
推荐指数
1
解决办法
272
查看次数

为什么这个URL不属于同一原产地政策?

我从JSON-P(来自JSON-P VS JSON维基百科)了解到的是 - JSON-P的发明是为了克服浏览器相同原始策略并从另一个域加载JSON对象.stackoverflow上有一篇文章,展示了JSON-P调用的工作原理.看来,如果我?callback=?从URL中删除,JSON-P请求就像普通的JSON调用一样,因此被相同的源策略拒绝.这个实例证明了这一点.

现在我有另一个URL:https://graph.facebook.com/100001612121705.json 我使用以下方法从中加载数据(请访问此处获取实例):

$(document).ready(function() {
    $.getJSON("https://graph.facebook.com/100001612121705", null,
    function(data) {
        $.each(data, function(key, val) { 
            alert(key + ' is ' + val);
        });
    });
});?
Run Code Online (Sandbox Code Playgroud)

请注意,我没有使用?callback?带有我的URL,但此请求仍然可以从另一个域获取JSON数据!这对我来说非常令人惊讶.任何人都可以解释为什么这个请求不被同源原则规则拒绝?

javascript jquery json jsonp cross-domain

2
推荐指数
1
解决办法
242
查看次数

有人可以解释我如何进行JSONP调用,就像我五岁一样?

我已经在服务器中有一个.json对象.它是正确的,没有语法错误(有效的json).我想通过JSONP调用此对象,因为它驻留在与我的应用程序不同的服务器中.

我想我理解如何在客户端实现它,但我不知道该怎么做与服务器部分有关.在关注网络上已有的信息时,我一直有错误.有帮助吗?

javascript jquery json jsonp

0
推荐指数
2
解决办法
509
查看次数